diff options
author | fgalligan@chromium.org <fgalligan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-12 17:59:09 +0000 |
---|---|---|
committer | fgalligan@chromium.org <fgalligan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-12 17:59:09 +0000 |
commit | 7be2737d8231c3ebee09a15ea21c729c26b7e794 (patch) | |
tree | 531b04671d71fe8a75798e289410686b281e121f /media | |
parent | 13542b25bd8f6ccfbeaf943ea23d25104feff7aa (diff) | |
download | chromium_src-7be2737d8231c3ebee09a15ea21c729c26b7e794.zip chromium_src-7be2737d8231c3ebee09a15ea21c729c26b7e794.tar.gz chromium_src-7be2737d8231c3ebee09a15ea21c729c26b7e794.tar.bz2 |
Merge 55596 - Fix av sync for webm files with altref video frames. Altref frames
need to be decoded but they do not produce a valid output frame. The
pts_heap_ was not getting popped for altref frames.
BUG=51014
TEST=Play content form sync test and make sure the content plays
back in sync.
Review URL: http://codereview.chromium.org/3086009
TBR=fgalligan@chromium.org
Review URL: http://codereview.chromium.org/3169009
git-svn-id: svn://svn.chromium.org/chrome/branches/472/src@55905 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/ffmpeg_video_decode_engine.cc | 4 | ||||
-rw-r--r-- | media/filters/ffmpeg_video_decode_engine_unittest.cc | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/media/filters/ffmpeg_video_decode_engine.cc b/media/filters/ffmpeg_video_decode_engine.cc index 46e2de0..2edad17 100644 --- a/media/filters/ffmpeg_video_decode_engine.cc +++ b/media/filters/ffmpeg_video_decode_engine.cc @@ -132,6 +132,10 @@ void FFmpegVideoDecodeEngine::DecodeFrame(scoped_refptr<Buffer> buffer) { // Let FFmpeg handle presentation timestamp reordering. codec_context_->reordered_opaque = buffer->GetTimestamp().InMicroseconds(); + // This is for codecs not using get_buffer to initialize + // |av_frame_->reordered_opaque| + av_frame_->reordered_opaque = codec_context_->reordered_opaque; + int frame_decoded = 0; int result = avcodec_decode_video2(codec_context_, av_frame_.get(), diff --git a/media/filters/ffmpeg_video_decode_engine_unittest.cc b/media/filters/ffmpeg_video_decode_engine_unittest.cc index b774e65..d335b6e 100644 --- a/media/filters/ffmpeg_video_decode_engine_unittest.cc +++ b/media/filters/ffmpeg_video_decode_engine_unittest.cc @@ -205,8 +205,10 @@ TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_Normal) { EXPECT_CALL(*this, OnDecodeComplete(_)) .WillOnce(DecodeComplete(this)); test_engine_->EmptyThisBuffer(buffer_); - EXPECT_EQ(kTimestamp.InMicroseconds(), - video_frame_->GetTimestamp().ToInternalValue()); + + // |video_frame_| timestamp is 0 because we set the timestamp based off + // the buffer timestamp. + EXPECT_EQ(0, video_frame_->GetTimestamp().ToInternalValue()); EXPECT_EQ(kDuration.ToInternalValue(), video_frame_->GetDuration().ToInternalValue()); } |