diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp index 65c64b4..212e54f 100644 --- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp +++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp @@ -52,6 +52,9 @@ using namespace std; namespace WebCore { +GST_DEBUG_CATEGORY_STATIC(webkit_media_debug); +#define GST_CAT_DEFAULT webkit_media_debug + gboolean mediaPlayerPrivateErrorCallback(GstBus* bus, GstMessage* message, gpointer data) { if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_ERROR) { @@ -59,7 +62,7 @@ gboolean mediaPlayerPrivateErrorCallback(GstBus* bus, GstMessage* message, gpoin GOwnPtr debug; gst_message_parse_error(message, &err.outPtr(), &debug.outPtr()); - LOG_VERBOSE(Media, "Error: %d, %s", err->code, err->message); + GST_INFO("Error: %d, %s", err->code, err->message); MediaPlayer::NetworkState error = MediaPlayer::Empty; if (err->domain == GST_CORE_ERROR || err->domain == GST_LIBRARY_ERROR) @@ -79,7 +82,7 @@ gboolean mediaPlayerPrivateErrorCallback(GstBus* bus, GstMessage* message, gpoin gboolean mediaPlayerPrivateEOSCallback(GstBus* bus, GstMessage* message, gpointer data) { if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_EOS) { - LOG_VERBOSE(Media, "End of Stream"); + GST_INFO("End of Stream"); MediaPlayerPrivate* mp = reinterpret_cast(data); mp->didEnd(); } @@ -100,7 +103,7 @@ gboolean mediaPlayerPrivateBufferingCallback(GstBus* bus, GstMessage* message, g if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_BUFFERING) { gint percent = 0; gst_message_parse_buffering(message, &percent); - LOG_VERBOSE(Media, "Buffering %d", percent); + GST_INFO("Buffering %d", percent); } return true; } @@ -117,8 +120,10 @@ MediaPlayerPrivateInterface* MediaPlayerPrivate::create(MediaPlayer* player) void MediaPlayerPrivate::registerMediaEngine(MediaEngineRegistrar registrar) { - if (isAvailable()) + if (isAvailable()) { + GST_DEBUG_CATEGORY_INIT(webkit_media_debug, "webkit", 0, "player"); registrar(create, getSupportedTypes, supportsType); + } } static bool gstInitialized = false; @@ -189,7 +194,7 @@ MediaPlayerPrivate::~MediaPlayerPrivate() void MediaPlayerPrivate::load(const String& url) { - LOG_VERBOSE(Media, "Load %s", url.utf8().data()); + GST_INFO("Load %s", url.utf8().data()); if (m_networkState != MediaPlayer::Loading) { m_networkState = MediaPlayer::Loading; m_player->networkStateChanged(); @@ -205,13 +210,13 @@ void MediaPlayerPrivate::load(const String& url) void MediaPlayerPrivate::play() { - LOG_VERBOSE(Media, "Play"); + GST_INFO("Play"); gst_element_set_state(m_playBin, GST_STATE_PLAYING); } void MediaPlayerPrivate::pause() { - LOG_VERBOSE(Media, "Pause"); + GST_INFO("Pause"); gst_element_set_state(m_playBin, GST_STATE_PAUSED); } @@ -226,24 +231,17 @@ float MediaPlayerPrivate::duration() const GstFormat timeFormat = GST_FORMAT_TIME; gint64 timeLength = 0; -#if !GST_CHECK_VERSION(0, 10, 23) - // We try to get the duration, but we do not trust the - // return value of the query function only; the problem we are - // trying to work-around here is that pipelines in stream mode may - // not be able to figure out the duration, but still return true! - // See https://bugs.webkit.org/show_bug.cgi?id=24639 which has been - // fixed in gst-plugins-base 0.10.23 - if (!gst_element_query_duration(m_playBin, &timeFormat, &timeLength) || timeLength <= 0) { -#else - if (!gst_element_query_duration(m_playBin, &timeFormat, &timeLength)) { -#endif - LOG_VERBOSE(Media, "Time duration query failed."); + if (!gst_element_query_duration(m_playBin, &timeFormat, &timeLength) || + timeFormat != GST_FORMAT_TIME || + timeLength == GST_CLOCK_TIME_NONE) { + + GST_INFO("Time duration query failed."); return numeric_limits::infinity(); } - LOG_VERBOSE(Media, "Duration: %" GST_TIME_FORMAT, GST_TIME_ARGS(timeLength)); + GST_INFO("Duration: %" GST_TIME_FORMAT, GST_TIME_ARGS(timeLength)); - return (float) (timeLength / 1000000000.0); + return (float) ((guint64) timeLength / 1000000000.0); // FIXME: handle 3.14.9.5 properly } @@ -259,7 +257,7 @@ float MediaPlayerPrivate::currentTime() const GstQuery* query = gst_query_new_position(GST_FORMAT_TIME); if (!gst_element_query(m_playBin, query)) { - LOG_VERBOSE(Media, "Position query failed..."); + GST_INFO("Position query failed..."); gst_query_unref(query); return ret; } @@ -267,7 +265,7 @@ float MediaPlayerPrivate::currentTime() const gint64 position; gst_query_parse_position(query, 0, &position); ret = (float) (position / 1000000000.0); - LOG_VERBOSE(Media, "Position %" GST_TIME_FORMAT, GST_TIME_ARGS(position)); + GST_INFO("Position %" GST_TIME_FORMAT, GST_TIME_ARGS(position)); gst_query_unref(query); @@ -287,13 +285,13 @@ void MediaPlayerPrivate::seek(float time) if (m_errorOccured) return; - LOG_VERBOSE(Media, "Seek: %" GST_TIME_FORMAT, GST_TIME_ARGS(sec)); + GST_INFO("Seek: %" GST_TIME_FORMAT, GST_TIME_ARGS(sec)); if (!gst_element_seek( m_playBin, m_rate, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH), GST_SEEK_TYPE_SET, sec, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) - LOG_VERBOSE(Media, "Seek to %f failed", time); + GST_INFO("Seek to %f failed", time); else m_seeking = true; } @@ -377,7 +375,7 @@ bool MediaPlayerPrivate::hasAudio() const void MediaPlayerPrivate::setVolume(float volume) { m_volume = volume; - LOG_VERBOSE(Media, "Volume to %f", volume); + GST_INFO("Volume to %f", volume); if (!m_playBin) return; @@ -404,7 +402,7 @@ void MediaPlayerPrivate::setRate(float rate) return; m_rate = rate; - LOG_VERBOSE(Media, "Set Rate to %f", rate); + GST_INFO("Set Rate to %f", rate); seek(currentTime()); } @@ -439,7 +437,7 @@ float MediaPlayerPrivate::maxTimeSeekable() const return 0.0; // TODO - LOG_VERBOSE(Media, "maxTimeSeekable"); + GST_INFO("maxTimeSeekable"); if (m_isStreaming) return numeric_limits::infinity(); // infinite duration means live stream @@ -452,7 +450,7 @@ float MediaPlayerPrivate::maxTimeLoaded() const return 0.0; // TODO - LOG_VERBOSE(Media, "maxTimeLoaded"); + GST_INFO("maxTimeLoaded"); notImplemented(); return duration(); } @@ -460,7 +458,7 @@ float MediaPlayerPrivate::maxTimeLoaded() const unsigned MediaPlayerPrivate::bytesLoaded() const { notImplemented(); - LOG_VERBOSE(Media, "bytesLoaded"); + GST_INFO("bytesLoaded"); /*if (!m_playBin) return 0; float dur = duration(); @@ -473,13 +471,13 @@ unsigned MediaPlayerPrivate::bytesLoaded() const bool MediaPlayerPrivate::totalBytesKnown() const { - LOG_VERBOSE(Media, "totalBytesKnown"); + GST_INFO("totalBytesKnown"); return totalBytes() > 0; } unsigned MediaPlayerPrivate::totalBytes() const { - LOG_VERBOSE(Media, "totalBytes"); + GST_INFO("totalBytes"); if (!m_source) return 0; @@ -521,7 +519,7 @@ void MediaPlayerPrivate::updateStates() bool shouldUpdateAfterSeek = false; switch (ret) { case GST_STATE_CHANGE_SUCCESS: - LOG_VERBOSE(Media, "State: %s, pending: %s", + GST_INFO("State: %s, pending: %s", gst_element_state_get_name(state), gst_element_state_get_name(pending)); @@ -544,22 +542,22 @@ void MediaPlayerPrivate::updateStates() g_object_get(m_playBin, "source", &m_source, NULL); if (!m_source) - LOG_VERBOSE(Media, "m_source is 0"); + GST_INFO("m_source is 0"); break; case GST_STATE_CHANGE_ASYNC: - LOG_VERBOSE(Media, "Async: State: %s, pending: %s", + GST_INFO("Async: State: %s, pending: %s", gst_element_state_get_name(state), gst_element_state_get_name(pending)); // Change in progress return; case GST_STATE_CHANGE_FAILURE: - LOG_VERBOSE(Media, "Failure: State: %s, pending: %s", + GST_INFO("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", + GST_INFO("No preroll: State: %s, pending: %s", gst_element_state_get_name(state), gst_element_state_get_name(pending)); @@ -571,7 +569,7 @@ void MediaPlayerPrivate::updateStates() m_networkState = MediaPlayer::Loading; break; default: - LOG_VERBOSE(Media, "Else : %d", ret); + GST_INFO("Else : %d", ret); break; } @@ -582,12 +580,12 @@ void MediaPlayerPrivate::updateStates() timeChanged(); if (m_networkState != oldNetworkState) { - LOG_VERBOSE(Media, "Network State Changed from %u to %u", + GST_INFO("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", + GST_INFO("Ready State Changed from %u to %u", oldReadyState, m_readyState); m_player->readyStateChanged(); }