Title: [120654] trunk
Revision
120654
Author
[email protected]
Date
2012-06-18 18:32:28 -0700 (Mon, 18 Jun 2012)

Log Message

[EFL] media/video-seek-past-end-playing.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=89301

Patch by Christophe Dumez <[email protected]> on 2012-06-18
Reviewed by Philippe Normand.

Source/WebCore:

Switch to double for media duration and playback position
calculations to avoid precision problems.
This patch also removes the workaround for the precision
problem in didEnd() which is no longer needed.

Test: media/video-seek-past-end-playing.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition):
(WebCore::MediaPlayerPrivateGStreamer::duration):

LayoutTests:

Unskip media/video-seek-past-end-playing.html now that the
precision problem in MediaPlayerPrivateGStreamer is fixed.

* platform/efl/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (120653 => 120654)


--- trunk/LayoutTests/ChangeLog	2012-06-19 01:30:04 UTC (rev 120653)
+++ trunk/LayoutTests/ChangeLog	2012-06-19 01:32:28 UTC (rev 120654)
@@ -1,3 +1,15 @@
+2012-06-18  Christophe Dumez  <[email protected]>
+
+        [EFL] media/video-seek-past-end-playing.html is flaky
+        https://bugs.webkit.org/show_bug.cgi?id=89301
+
+        Reviewed by Philippe Normand.
+
+        Unskip media/video-seek-past-end-playing.html now that the
+        precision problem in MediaPlayerPrivateGStreamer is fixed.
+
+        * platform/efl/TestExpectations:
+
 2012-06-18  Andrew Scherkus  <[email protected]>
 
         [Chromium] Unreviewed. Rebaseline media layout tests due to updated controls.

Modified: trunk/LayoutTests/platform/efl/TestExpectations (120653 => 120654)


--- trunk/LayoutTests/platform/efl/TestExpectations	2012-06-19 01:30:04 UTC (rev 120653)
+++ trunk/LayoutTests/platform/efl/TestExpectations	2012-06-19 01:32:28 UTC (rev 120654)
@@ -155,7 +155,6 @@
 BUGWK86082 : security/block-test.html = TEXT PASS
 BUGWK86084 : svg/dom/SVGScriptElement/script-onerror-bubbling.svg = TEXT PASS
 BUGWK60103 : fast/replaced/border-radius-clip.html = TEXT PASS
-BUGWK89301 : media/video-seek-past-end-playing.html = TEXT PASS
 
 //////////////////////////////////////////////////////////////////////////////////////////
 // FAILING TESTS

Modified: trunk/Source/WebCore/ChangeLog (120653 => 120654)


--- trunk/Source/WebCore/ChangeLog	2012-06-19 01:30:04 UTC (rev 120653)
+++ trunk/Source/WebCore/ChangeLog	2012-06-19 01:32:28 UTC (rev 120654)
@@ -1,3 +1,21 @@
+2012-06-18  Christophe Dumez  <[email protected]>
+
+        [EFL] media/video-seek-past-end-playing.html is flaky
+        https://bugs.webkit.org/show_bug.cgi?id=89301
+
+        Reviewed by Philippe Normand.
+
+        Switch to double for media duration and playback position
+        calculations to avoid precision problems.
+        This patch also removes the workaround for the precision
+        problem in didEnd() which is no longer needed.
+
+        Test: media/video-seek-past-end-playing.html
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::playbackPosition):
+        (WebCore::MediaPlayerPrivateGStreamer::duration):
+
 2012-06-18  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r120593.

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (120653 => 120654)


--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp	2012-06-19 01:30:04 UTC (rev 120653)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp	2012-06-19 01:32:28 UTC (rev 120654)
@@ -331,7 +331,7 @@
     // Position is available only if the pipeline is not in GST_STATE_NULL or
     // GST_STATE_READY state.
     if (position != static_cast<gint64>(GST_CLOCK_TIME_NONE))
-        ret = static_cast<float>(position) / static_cast<float>(GST_SECOND);
+        ret = static_cast<double>(position) / GST_SECOND;
 
     LOG_VERBOSE(Media, "Position %" GST_TIME_FORMAT, GST_TIME_ARGS(position));
 
@@ -411,7 +411,7 @@
 
     LOG_VERBOSE(Media, "Duration: %" GST_TIME_FORMAT, GST_TIME_ARGS(timeLength));
 
-    return (float) ((guint64) timeLength / 1000000000.0);
+    return static_cast<double>(timeLength) / GST_SECOND;
     // FIXME: handle 3.14.9.5 properly
 }
 
@@ -1356,12 +1356,10 @@
 void MediaPlayerPrivateGStreamer::didEnd()
 {
     // EOS was reached but the position is not always 0 in case of
-    // reverse playback (or the same as duration in case of forward
-    // playback). So to not confuse the HTMLMediaElement, we
+    // reverse playback. So to not confuse the HTMLMediaElement, we
     // synchronize position and duration values.
     float now = currentTime();
-    if ((now > 0 && m_playbackRate < 0)
-        || (now < duration() && m_playbackRate > 0)) {
+    if (now > 0 && m_playbackRate < 0) {
         m_mediaDuration = now;
         m_mediaDurationKnown = true;
         m_player->durationChanged();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to