[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.21-584-g1e41756

philn at webkit.org philn at webkit.org
Fri Feb 26 22:25:31 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit 80c349781271e2c33690736342fb9b4c294cce96
Author: philn at webkit.org <philn at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Feb 19 08:30:14 2010 +0000

    2010-02-17  Philippe Normand  <pnormand at igalia.com>
    
            Reviewed by Eric Seidel.
    
            [GTK] RTP/RTSP streams playback support
            https://bugs.webkit.org/show_bug.cgi?id=33662
    
            Added live pipelines support in updateStates().
    
            * manual-tests/video-rtsp.html: Added.
            * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
            (WebCore::MediaPlayerPrivate::seek):
            (WebCore::MediaPlayerPrivate::updateStates):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55005 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c5714e2..2d1d8bd 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2010-02-17  Philippe Normand  <pnormand at igalia.com>
+
+        Reviewed by Eric Seidel.
+
+        [GTK] RTP/RTSP streams playback support
+        https://bugs.webkit.org/show_bug.cgi?id=33662
+
+        Added live pipelines support in updateStates().
+
+        * manual-tests/video-rtsp.html: Added.
+        * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivate::seek):
+        (WebCore::MediaPlayerPrivate::updateStates):
+
 2010-02-18  Yaar Schnitman  <yaar at chromium.org>
 
         Reviewed by Darin Adler.
diff --git a/WebCore/manual-tests/video-rtsp.html b/WebCore/manual-tests/video-rtsp.html
new file mode 100644
index 0000000..4fff987
--- /dev/null
+++ b/WebCore/manual-tests/video-rtsp.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>RTSP playback test</title>
+</head>
+<body>
+<video with=640 height=352 autoplay controls src="rtsp://a2047.v1411b.c1411.g.vq.akamaistream.net/5/2047/1411/2_h264_650/1a1a1ae454c430950065de4cbb2f94c226950c7ae655b61a48a91475e243acda3dac194879adde0f/wwdc_2006_2_650.mov"></video>
+<p>Test that QuickTime file with RTSP URL loads.<p>
+<script>start()</script>
+<pre id="console"></pre>
+</body>
+</html>
diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
index cbc64a1..e1c9fd2 100644
--- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
@@ -53,7 +53,6 @@
 #include <gst/video/video.h>
 #include <limits>
 #include <math.h>
-#include <webkit/webkitwebview.h>
 #include <wtf/gtk/GOwnPtr.h>
 
 // GstPlayFlags flags from playbin2. It is the policy of GStreamer to
@@ -463,9 +462,6 @@ void MediaPlayerPrivate::seek(float time)
     if (!m_playBin)
         return;
 
-    if (m_isStreaming)
-        return;
-
     if (m_errorOccured)
         return;
 
@@ -891,7 +887,18 @@ void MediaPlayerPrivate::updateStates()
             gst_element_state_get_name(state),
             gst_element_state_get_name(pending));
         // Change in progress
-        return;
+
+        if (!m_isStreaming)
+            return;
+
+        // Resume playback if a seek was performed in a live pipeline.
+        if (m_seeking) {
+            shouldUpdateAfterSeek = true;
+            m_seeking = false;
+            if (m_paused)
+                gst_element_set_state(m_playBin, GST_STATE_PLAYING);
+        }
+        break;
     case GST_STATE_CHANGE_FAILURE:
         LOG_VERBOSE(Media, "Failure: State: %s, pending: %s",
             gst_element_state_get_name(state),
@@ -905,8 +912,25 @@ void MediaPlayerPrivate::updateStates()
 
         if (state == GST_STATE_READY)
             m_readyState = MediaPlayer::HaveNothing;
-        else if (state == GST_STATE_PAUSED)
-            m_readyState = MediaPlayer::HaveCurrentData;
+        else if (state == GST_STATE_PAUSED) {
+            m_readyState = MediaPlayer::HaveEnoughData;
+            m_paused = true;
+            // Live pipelines go in PAUSED without prerolling.
+            m_isStreaming = true;
+        } else if (state == GST_STATE_PLAYING) {
+            m_startedPlaying = true;
+            m_paused = false;
+        }
+
+        if (m_paused && !m_startedPlaying)
+            gst_element_set_state(m_playBin, GST_STATE_PLAYING);
+
+        if (m_seeking) {
+            shouldUpdateAfterSeek = true;
+            m_seeking = false;
+            if (m_paused)
+                gst_element_set_state(m_playBin, GST_STATE_PLAYING);
+        }
 
         m_networkState = MediaPlayer::Loading;
         break;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list