summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfgalligan@chromium.org <fgalligan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 17:59:09 +0000
committerfgalligan@chromium.org <fgalligan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 17:59:09 +0000
commit7be2737d8231c3ebee09a15ea21c729c26b7e794 (patch)
tree531b04671d71fe8a75798e289410686b281e121f
parent13542b25bd8f6ccfbeaf943ea23d25104feff7aa (diff)
downloadchromium_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
-rw-r--r--media/filters/ffmpeg_video_decode_engine.cc4
-rw-r--r--media/filters/ffmpeg_video_decode_engine_unittest.cc6
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());
}