Commit 97b3029b authored by scherkus@chromium.org's avatar scherkus@chromium.org

Fix frame-exact seeking again to stay within duration as opposed to rounding to the closest frame.

Based on discussion from https://bugs.webkit.org/show_bug.cgi?id=52697 to be consistent with other WebKit ports.

BUG=69499
TEST=media_unittests

Review URL: http://codereview.chromium.org/6259012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72247 0039d316-1c4b-4281-b951-d872f2087c98
parent 533e681e
...@@ -408,7 +408,7 @@ void VideoRendererBase::ConsumeVideoFrame(scoped_refptr<VideoFrame> frame) { ...@@ -408,7 +408,7 @@ void VideoRendererBase::ConsumeVideoFrame(scoped_refptr<VideoFrame> frame) {
// Discard frames until we reach our desired seek timestamp. // Discard frames until we reach our desired seek timestamp.
if (state_ == kSeeking && !frame->IsEndOfStream() && if (state_ == kSeeking && !frame->IsEndOfStream() &&
(frame->GetTimestamp() + frame->GetDuration() / 2) < seek_timestamp_) { (frame->GetTimestamp() + frame->GetDuration()) <= seek_timestamp_) {
frames_queue_done_.push_back(frame); frames_queue_done_.push_back(frame);
ScheduleRead_Locked(); ScheduleRead_Locked();
} else { } else {
......
...@@ -243,15 +243,15 @@ TEST_F(VideoRendererBaseTest, Seek_Exact) { ...@@ -243,15 +243,15 @@ TEST_F(VideoRendererBaseTest, Seek_Exact) {
Flush(); Flush();
} }
TEST_F(VideoRendererBaseTest, Seek_RoundUp) { TEST_F(VideoRendererBaseTest, Seek_RightBefore) {
Initialize(); Initialize();
Flush(); Flush();
Seek(kDuration * 6 - 1); Seek(kDuration * 6 - 1);
ExpectCurrentTimestamp(kDuration * 6); ExpectCurrentTimestamp(kDuration * 5);
Flush(); Flush();
} }
TEST_F(VideoRendererBaseTest, Seek_RoundDown) { TEST_F(VideoRendererBaseTest, Seek_RightAfter) {
Initialize(); Initialize();
Flush(); Flush();
Seek(kDuration * 6 + 1); Seek(kDuration * 6 + 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment