Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (124463 => 124464)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2012-08-02 16:08:48 UTC (rev 124463)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2012-08-02 16:09:32 UTC (rev 124464)
@@ -80,6 +80,9 @@
static const char* gPlaybinName = "playbin2";
#endif
+GST_DEBUG_CATEGORY_STATIC(webkit_media_player_debug);
+#define GST_CAT_DEFAULT webkit_media_player_debug
+
using namespace std;
namespace WebCore {
@@ -182,8 +185,10 @@
return false;
GRefPtr<GstElementFactory> srcFactory = gst_element_factory_find("webkitwebsrc");
- if (!srcFactory)
+ if (!srcFactory) {
+ GST_DEBUG_CATEGORY_INIT(webkit_media_player_debug, "webkitmediaplayer", 0, "WebKit media player");
return gst_element_register(0, "webkitwebsrc", GST_RANK_PRIMARY + 100, WEBKIT_TYPE_WEB_SRC);
+ }
return true;
}
@@ -297,10 +302,10 @@
m_url = KURL(KURL(), cleanUrl);
g_object_set(m_playBin, "uri", cleanUrl.utf8().data(), NULL);
- LOG_VERBOSE(Media, "Load %s", cleanUrl.utf8().data());
+ LOG_MEDIA_MESSAGE("Load %s", cleanUrl.utf8().data());
if (m_preload == MediaPlayer::None) {
- LOG_VERBOSE(Media, "Delaying load.");
+ LOG_MEDIA_MESSAGE("Delaying load.");
m_delayingLoad = true;
}
@@ -315,7 +320,7 @@
void MediaPlayerPrivateGStreamer::commitLoad()
{
ASSERT(!m_delayingLoad);
- LOG_VERBOSE(Media, "Committing load.");
+ LOG_MEDIA_MESSAGE("Committing load.");
updateStates();
}
@@ -325,7 +330,7 @@
GstQuery* query = gst_query_new_position(GST_FORMAT_TIME);
if (!gst_element_query(m_playBin, query)) {
- LOG_VERBOSE(Media, "Position query failed...");
+ LOG_MEDIA_MESSAGE("Position query failed...");
gst_query_unref(query);
return ret;
}
@@ -338,7 +343,7 @@
if (position != static_cast<gint64>(GST_CLOCK_TIME_NONE))
ret = static_cast<double>(position) / GST_SECOND;
- LOG_VERBOSE(Media, "Position %" GST_TIME_FORMAT, GST_TIME_ARGS(position));
+ LOG_MEDIA_MESSAGE("Position %" GST_TIME_FORMAT, GST_TIME_ARGS(position));
gst_query_unref(query);
@@ -377,13 +382,13 @@
void MediaPlayerPrivateGStreamer::play()
{
if (changePipelineState(GST_STATE_PLAYING))
- LOG_VERBOSE(Media, "Play");
+ LOG_MEDIA_MESSAGE("Play");
}
void MediaPlayerPrivateGStreamer::pause()
{
if (changePipelineState(GST_STATE_PAUSED))
- LOG_VERBOSE(Media, "Pause");
+ LOG_MEDIA_MESSAGE("Pause");
}
float MediaPlayerPrivateGStreamer::duration() const
@@ -410,11 +415,11 @@
bool failure = !gst_element_query_duration(m_playBin, &timeFormat, &timeLength) || timeFormat != GST_FORMAT_TIME || static_cast<guint64>(timeLength) == GST_CLOCK_TIME_NONE;
#endif
if (failure) {
- LOG_VERBOSE(Media, "Time duration query failed for %s", m_url.string().utf8().data());
+ LOG_MEDIA_MESSAGE("Time duration query failed for %s", m_url.string().utf8().data());
return numeric_limits<float>::infinity();
}
- LOG_VERBOSE(Media, "Duration: %" GST_TIME_FORMAT, GST_TIME_ARGS(timeLength));
+ LOG_MEDIA_MESSAGE("Duration: %" GST_TIME_FORMAT, GST_TIME_ARGS(timeLength));
return static_cast<double>(timeLength) / GST_SECOND;
// FIXME: handle 3.14.9.5 properly
@@ -466,14 +471,14 @@
timeValue.tv_usec = static_cast<glong>(roundf(microSeconds / 10000) * 10000);
GstClockTime clockTime = GST_TIMEVAL_TO_TIME(timeValue);
- LOG_VERBOSE(Media, "Seek: %" GST_TIME_FORMAT, GST_TIME_ARGS(clockTime));
+ LOG_MEDIA_MESSAGE("Seek: %" GST_TIME_FORMAT, GST_TIME_ARGS(clockTime));
if (!gst_element_seek(m_playBin, m_player->rate(),
GST_FORMAT_TIME,
(GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE),
GST_SEEK_TYPE_SET, clockTime,
GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE))
- LOG_VERBOSE(Media, "Seek to %f failed", time);
+ LOG_MEDIA_MESSAGE("Seek to %f failed", time);
else {
m_seeking = true;
m_seekTime = time;
@@ -519,8 +524,8 @@
if (!getVideoSizeAndFormatFromCaps(caps, originalSize, format, pixelAspectRatioNumerator, pixelAspectRatioDenominator, stride))
return IntSize();
- LOG_VERBOSE(Media, "Original video size: %dx%d", originalSize.width(), originalSize.height());
- LOG_VERBOSE(Media, "Pixel aspect ratio: %d/%d", pixelAspectRatioNumerator, pixelAspectRatioDenominator);
+ LOG_MEDIA_MESSAGE("Original video size: %dx%d", originalSize.width(), originalSize.height());
+ LOG_MEDIA_MESSAGE("Pixel aspect ratio: %d/%d", pixelAspectRatioNumerator, pixelAspectRatioDenominator);
// Calculate DAR based on PAR and video size.
int displayWidth = originalSize.width() * pixelAspectRatioNumerator;
@@ -534,20 +539,20 @@
// Apply DAR to original video size. This is the same behavior as in xvimagesink's setcaps function.
guint64 width = 0, height = 0;
if (!(originalSize.height() % displayHeight)) {
- LOG_VERBOSE(Media, "Keeping video original height");
+ LOG_MEDIA_MESSAGE("Keeping video original height");
width = gst_util_uint64_scale_int(originalSize.height(), displayWidth, displayHeight);
height = static_cast<guint64>(originalSize.height());
} else if (!(originalSize.width() % displayWidth)) {
- LOG_VERBOSE(Media, "Keeping video original width");
+ LOG_MEDIA_MESSAGE("Keeping video original width");
height = gst_util_uint64_scale_int(originalSize.width(), displayHeight, displayWidth);
width = static_cast<guint64>(originalSize.width());
} else {
- LOG_VERBOSE(Media, "Approximating while keeping original video height");
+ LOG_MEDIA_MESSAGE("Approximating while keeping original video height");
width = gst_util_uint64_scale_int(originalSize.height(), displayWidth, displayHeight);
height = static_cast<guint64>(originalSize.height());
}
- LOG_VERBOSE(Media, "Natural size: %" G_GUINT64_FORMAT "x%" G_GUINT64_FORMAT, width, height);
+ LOG_MEDIA_MESSAGE("Natural size: %" G_GUINT64_FORMAT "x%" G_GUINT64_FORMAT, width, height);
m_videoSize = IntSize(static_cast<int>(width), static_cast<int>(height));
return m_videoSize;
}
@@ -653,7 +658,7 @@
gint64 start, end;
bool mute = false;
- LOG_VERBOSE(Media, "Set Rate to %f", rate);
+ LOG_MEDIA_MESSAGE("Set Rate to %f", rate);
if (rate > 0) {
// Mute the sound if the playback rate is too extreme.
// TODO: in other cases we should perform pitch adjustments.
@@ -672,12 +677,12 @@
end = currentPosition;
}
- LOG_VERBOSE(Media, "Need to mute audio: %d", (int) mute);
+ LOG_MEDIA_MESSAGE("Need to mute audio: %d", (int) mute);
if (!gst_element_seek(m_playBin, rate, GST_FORMAT_TIME, flags,
GST_SEEK_TYPE_SET, start,
GST_SEEK_TYPE_SET, end))
- LOG_VERBOSE(Media, "Set rate to %f failed", rate);
+ LOG_MEDIA_MESSAGE("Set rate to %f failed", rate);
else
g_object_set(m_playBin, "mute", mute, NULL);
}
@@ -752,13 +757,13 @@
}
}
- LOG_VERBOSE(Media, "Message received from element %s", GST_MESSAGE_SRC_NAME(message));
+ LOG_MEDIA_MESSAGE("Message received from element %s", GST_MESSAGE_SRC_NAME(message));
switch (GST_MESSAGE_TYPE(message)) {
case GST_MESSAGE_ERROR:
if (m_resetPipeline)
break;
gst_message_parse_error(message, &err.outPtr(), &debug.outPtr());
- LOG_VERBOSE(Media, "Error %d: %s (url="" err->code, err->message, m_url.string().utf8().data());
+ LOG_MEDIA_MESSAGE("Error %d: %s (url="" err->code, err->message, m_url.string().utf8().data());
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(m_playBin), GST_DEBUG_GRAPH_SHOW_ALL, "webkit-video.error");
@@ -774,7 +779,7 @@
// this case the HTMLMediaElement will emit a stalled
// event.
if (err->code == GST_STREAM_ERROR_TYPE_NOT_FOUND) {
- LOG_VERBOSE(Media, "Decode error, let the Media element emit a stalled event.");
+ LOG_MEDIA_MESSAGE("Decode error, let the Media element emit a stalled event.");
break;
}
error = MediaPlayer::DecodeError;
@@ -788,14 +793,14 @@
loadingFailed(error);
break;
case GST_MESSAGE_EOS:
- LOG_VERBOSE(Media, "End of Stream");
+ LOG_MEDIA_MESSAGE("End of Stream");
didEnd();
break;
case GST_MESSAGE_STATE_CHANGED:
// Ignore state changes if load is delayed (preload=none). The
// player state will be updated once commitLoad() is called.
if (m_delayingLoad) {
- LOG_VERBOSE(Media, "Media load has been delayed. Ignoring state changes for now");
+ LOG_MEDIA_MESSAGE("Media load has been delayed. Ignoring state changes for now");
break;
}
@@ -819,11 +824,11 @@
processBufferingStats(message);
break;
case GST_MESSAGE_DURATION:
- LOG_VERBOSE(Media, "Duration changed");
+ LOG_MEDIA_MESSAGE("Duration changed");
durationChanged();
break;
default:
- LOG_VERBOSE(Media, "Unhandled GStreamer message type: %s",
+ LOG_MEDIA_MESSAGE("Unhandled GStreamer message type: %s",
GST_MESSAGE_TYPE_NAME(message));
break;
}
@@ -838,7 +843,7 @@
const GstStructure *structure = gst_message_get_structure(message);
gst_structure_get_int(structure, "buffer-percent", &m_bufferingPercentage);
- LOG_VERBOSE(Media, "[Buffering] Buffering: %d%%.", m_bufferingPercentage);
+ LOG_MEDIA_MESSAGE("[Buffering] Buffering: %d%%.", m_bufferingPercentage);
GstBufferingMode mode;
gst_message_parse_buffering_stats(message, &mode, 0, 0, 0);
@@ -850,7 +855,7 @@
// This is on-disk buffering, that allows us to download much more
// than needed for right now.
if (!m_startedBuffering) {
- LOG_VERBOSE(Media, "[Buffering] Starting on-disk buffering.");
+ LOG_MEDIA_MESSAGE("[Buffering] Starting on-disk buffering.");
m_startedBuffering = true;
@@ -879,7 +884,7 @@
if (stop != -1)
fillStatus = 100.0 * stop / GST_FORMAT_PERCENT_MAX;
- LOG_VERBOSE(Media, "[Buffering] Download buffer filled up to %f%%", fillStatus);
+ LOG_MEDIA_MESSAGE("[Buffering] Download buffer filled up to %f%%", fillStatus);
if (!m_mediaDuration)
durationChanged();
@@ -891,7 +896,7 @@
m_maxTimeLoaded = m_mediaDuration;
else
m_maxTimeLoaded = static_cast<float>((fillStatus * m_mediaDuration) / 100.0);
- LOG_VERBOSE(Media, "[Buffering] Updated maxTimeLoaded: %f", m_maxTimeLoaded);
+ LOG_MEDIA_MESSAGE("[Buffering] Updated maxTimeLoaded: %f", m_maxTimeLoaded);
}
if (fillStatus != 100.0) {
@@ -912,7 +917,7 @@
if (m_errorOccured)
return 0.0f;
- LOG_VERBOSE(Media, "maxTimeSeekable");
+ LOG_MEDIA_MESSAGE("maxTimeSeekable");
// infinite duration means live stream
if (isinf(duration()))
return 0.0f;
@@ -928,7 +933,7 @@
float loaded = m_maxTimeLoaded;
if (!loaded && !m_fillTimer.isActive())
loaded = duration();
- LOG_VERBOSE(Media, "maxTimeLoaded: %f", loaded);
+ LOG_MEDIA_MESSAGE("maxTimeLoaded: %f", loaded);
return loaded;
}
@@ -939,7 +944,7 @@
float currentMaxTimeLoaded = maxTimeLoaded();
bool didLoadingProgress = currentMaxTimeLoaded != m_maxTimeLoadedAtLastDidLoadingProgress;
m_maxTimeLoadedAtLastDidLoadingProgress = currentMaxTimeLoaded;
- LOG_VERBOSE(Media, "didLoadingProgress: %d", didLoadingProgress);
+ LOG_MEDIA_MESSAGE("didLoadingProgress: %d", didLoadingProgress);
return didLoadingProgress;
}
@@ -961,7 +966,7 @@
#else
if (gst_element_query_duration(m_source.get(), &fmt, &length)) {
#endif
- LOG_VERBOSE(Media, "totalBytes %" G_GINT64_FORMAT, length);
+ LOG_MEDIA_MESSAGE("totalBytes %" G_GINT64_FORMAT, length);
m_totalBytes = static_cast<unsigned>(length);
m_isStreaming = !length;
return m_totalBytes;
@@ -1011,7 +1016,7 @@
gst_iterator_free(iter);
- LOG_VERBOSE(Media, "totalBytes %" G_GINT64_FORMAT, length);
+ LOG_MEDIA_MESSAGE("totalBytes %" G_GINT64_FORMAT, length);
m_totalBytes = static_cast<unsigned>(length);
m_isStreaming = !length;
return m_totalBytes;
@@ -1109,7 +1114,7 @@
bool shouldUpdateAfterSeek = false;
switch (ret) {
case GST_STATE_CHANGE_SUCCESS:
- LOG_VERBOSE(Media, "State: %s, pending: %s",
+ LOG_MEDIA_MESSAGE("State: %s, pending: %s",
gst_element_state_get_name(state),
gst_element_state_get_name(pending));
@@ -1147,10 +1152,10 @@
m_bufferingPercentage = 0;
m_readyState = MediaPlayer::HaveEnoughData;
- LOG_VERBOSE(Media, "[Buffering] Complete.");
+ LOG_MEDIA_MESSAGE("[Buffering] Complete.");
if (!m_paused) {
- LOG_VERBOSE(Media, "[Buffering] Restarting playback.");
+ LOG_MEDIA_MESSAGE("[Buffering] Restarting playback.");
gst_element_set_state(m_playBin, GST_STATE_PLAYING);
}
} else if (!m_buffering && (currentTime() < duration())) {
@@ -1164,7 +1169,7 @@
m_readyState = MediaPlayer::HaveCurrentData;
m_networkState = MediaPlayer::Loading;
- LOG_VERBOSE(Media, "[Buffering] Pausing stream for buffering.");
+ LOG_MEDIA_MESSAGE("[Buffering] Pausing stream for buffering.");
gst_element_set_state(m_playBin, GST_STATE_PAUSED);
}
@@ -1187,7 +1192,7 @@
break;
case GST_STATE_CHANGE_ASYNC:
- LOG_VERBOSE(Media, "Async: State: %s, pending: %s",
+ LOG_MEDIA_MESSAGE("Async: State: %s, pending: %s",
gst_element_state_get_name(state),
gst_element_state_get_name(pending));
// Change in progress
@@ -1216,13 +1221,13 @@
}
break;
case GST_STATE_CHANGE_FAILURE:
- LOG_VERBOSE(Media, "Failure: State: %s, pending: %s",
+ LOG_MEDIA_MESSAGE("Failure: State: %s, pending: %s",
gst_element_state_get_name(state),
gst_element_state_get_name(pending));
// Change failed
return;
case GST_STATE_CHANGE_NO_PREROLL:
- LOG_VERBOSE(Media, "No preroll: State: %s, pending: %s",
+ LOG_MEDIA_MESSAGE("No preroll: State: %s, pending: %s",
gst_element_state_get_name(state),
gst_element_state_get_name(pending));
@@ -1247,7 +1252,7 @@
m_networkState = MediaPlayer::Loading;
break;
default:
- LOG_VERBOSE(Media, "Else : %d", ret);
+ LOG_MEDIA_MESSAGE("Else : %d", ret);
break;
}
@@ -1258,12 +1263,12 @@
timeChanged();
if (m_networkState != oldNetworkState) {
- LOG_VERBOSE(Media, "Network State Changed from %u to %u",
+ LOG_MEDIA_MESSAGE("Network State Changed from %u to %u",
oldNetworkState, m_networkState);
m_player->networkStateChanged();
}
if (m_readyState != oldReadyState) {
- LOG_VERBOSE(Media, "Ready State Changed from %u to %u",
+ LOG_MEDIA_MESSAGE("Ready State Changed from %u to %u",
oldReadyState, m_readyState);
m_player->readyStateChanged();
}
@@ -1342,7 +1347,7 @@
RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::create(currentUrl);
if (securityOrigin->canRequest(newUrl)) {
- LOG_VERBOSE(Media, "New media url: %s", newUrl.string().utf8().data());
+ LOG_MEDIA_MESSAGE("New media url: %s", newUrl.string().utf8().data());
// Reset player states.
m_networkState = MediaPlayer::Loading;
@@ -1698,10 +1703,10 @@
GstPlayFlags flags;
g_object_get(m_playBin, "flags", &flags, NULL);
if (m_preload == MediaPlayer::Auto) {
- LOG_VERBOSE(Media, "Enabling on-disk buffering");
+ LOG_MEDIA_MESSAGE("Enabling on-disk buffering");
g_object_set(m_playBin, "flags", flags | GST_PLAY_FLAG_DOWNLOAD, NULL);
} else {
- LOG_VERBOSE(Media, "Disabling on-disk buffering");
+ LOG_MEDIA_MESSAGE("Disabling on-disk buffering");
g_object_set(m_playBin, "flags", flags & ~GST_PLAY_FLAG_DOWNLOAD, NULL);
}