[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

philn at webkit.org philn at webkit.org
Wed Dec 22 16:29:28 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 8853f2af47d97414af25962513959e3bbdc39f30
Author: philn at webkit.org <philn at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Nov 24 17:49:19 2010 +0000

    2010-11-24  Philippe Normand  <pnormand at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GStreamer] pause webkitvideosink during fullscreen video playback
            https://bugs.webkit.org/show_bug.cgi?id=48824
    
            Added an identity element before the webkitvideosink so that when
            fullscreen video is active the element can drop the incoming
            buffers so that webkitvideosink appears paused.
    
            * platform/graphics/gstreamer/GStreamerGWorld.cpp:
            (WebCore::GStreamerGWorld::enterFullscreen):
            (WebCore::GStreamerGWorld::exitFullscreen):
            * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
            (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72680 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5bc9d4e..3ea21ac 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2010-11-24  Philippe Normand  <pnormand at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GStreamer] pause webkitvideosink during fullscreen video playback
+        https://bugs.webkit.org/show_bug.cgi?id=48824
+
+        Added an identity element before the webkitvideosink so that when
+        fullscreen video is active the element can drop the incoming
+        buffers so that webkitvideosink appears paused.
+
+        * platform/graphics/gstreamer/GStreamerGWorld.cpp:
+        (WebCore::GStreamerGWorld::enterFullscreen):
+        (WebCore::GStreamerGWorld::exitFullscreen):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
+
 2010-11-24  Avi Drissman  <avi at google.com>
 
         Reviewed by Antonio Gomes.
diff --git a/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp b/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
index 1cb561e..b18bf84 100644
--- a/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
+++ b/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
@@ -87,6 +87,9 @@ bool GStreamerGWorld::enterFullscreen()
     GOwnPtr<GstElement> videoSink;
     g_object_get(m_pipeline, "video-sink", &videoSink.outPtr(), NULL);
     GstElement* tee = gst_bin_get_by_name(GST_BIN(videoSink.get()), "videoTee");
+    GstElement* valve = gst_bin_get_by_name(GST_BIN(videoSink.get()), "videoValve");
+
+    g_object_set(valve, "drop-probability", 1.0, NULL);
 
     // Add and link a queue, ffmpegcolorspace and sink in the bin.
     gst_bin_add_many(GST_BIN(videoSink.get()), platformVideoSink, videoScale, colorspace, queue, NULL);
@@ -158,6 +161,10 @@ void GStreamerGWorld::exitFullscreen()
     GstElement* colorspace = gst_bin_get_by_name(GST_BIN(videoSink.get()), "colorspace");
     GstElement* videoScale = gst_bin_get_by_name(GST_BIN(videoSink.get()), "videoScale");
 
+    GstElement* valve = gst_bin_get_by_name(GST_BIN(videoSink.get()), "videoValve");
+
+    g_object_set(valve, "drop-probability", 0.0, NULL);
+
     // Get pads to unlink and remove.
     GstPad* srcPad = gst_element_get_static_pad(tee, m_dynamicPadName);
     GstPad* sinkPad = gst_element_get_static_pad(queue, "sink");
diff --git a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
index 7012c9f..db1658b 100644
--- a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
@@ -1412,6 +1412,7 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
     m_videoSinkBin = gst_bin_new("sink");
     GstElement* videoTee = gst_element_factory_make("tee", "videoTee");
     GstElement* queue = gst_element_factory_make("queue", 0);
+    GstElement* identity = gst_element_factory_make("identity", "videoValve");
 
     // Take ownership.
     g_object_ref_sink(m_videoSinkBin);
@@ -1421,7 +1422,7 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
     // internal video sink. For fullscreen we create an autovideosink
     // and initially block the data flow towards it and configure it
 
-    gst_bin_add_many(GST_BIN(m_videoSinkBin), videoTee, queue, NULL);
+    gst_bin_add_many(GST_BIN(m_videoSinkBin), videoTee, queue, identity, NULL);
 
     // Link a new src pad from tee to queue1.
     GstPad* srcPad = gst_element_get_request_pad(videoTee, "src%d");
@@ -1445,7 +1446,7 @@ void MediaPlayerPrivateGStreamer::createGSTPlayBin()
         }
     } else {
         gst_bin_add(GST_BIN(m_videoSinkBin), m_webkitVideoSink);
-        gst_element_link(queue, m_webkitVideoSink);
+        gst_element_link_many(queue, identity, m_webkitVideoSink, NULL);
     }
 
     // Add a ghostpad to the bin so it can proxy to tee.

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list