Index: media/filters/ffmpeg_video_decode_engine_unittest.cc |
diff --git a/media/filters/ffmpeg_video_decode_engine_unittest.cc b/media/filters/ffmpeg_video_decode_engine_unittest.cc |
index 533edd088e21ce9af5035c03d27cb167f92ba0ad..f1d168041ebe1d82d4912390b378d599d4508e84 100644 |
--- a/media/filters/ffmpeg_video_decode_engine_unittest.cc |
+++ b/media/filters/ffmpeg_video_decode_engine_unittest.cc |
@@ -22,6 +22,7 @@ namespace media { |
static const int kWidth = 320; |
static const int kHeight = 240; |
+static const AVRational kTimeBase = { 1, 100 }; |
class FFmpegVideoDecodeEngineTest : public testing::Test { |
protected: |
@@ -29,14 +30,18 @@ class FFmpegVideoDecodeEngineTest : public testing::Test { |
// Setup FFmpeg structures. |
frame_buffer_.reset(new uint8[kWidth * kHeight]); |
memset(&yuv_frame_, 0, sizeof(yuv_frame_)); |
+ |
// DecodeFrame will check these pointers as non-NULL value. |
yuv_frame_.data[0] = yuv_frame_.data[1] = yuv_frame_.data[2] |
= frame_buffer_.get(); |
yuv_frame_.linesize[0] = kWidth; |
yuv_frame_.linesize[1] = yuv_frame_.linesize[2] = kWidth >> 1; |
+ |
memset(&codec_context_, 0, sizeof(codec_context_)); |
codec_context_.width = kWidth; |
codec_context_.height = kHeight; |
+ codec_context_.time_base = kTimeBase; |
+ |
memset(&codec_, 0, sizeof(codec_)); |
memset(&stream_, 0, sizeof(stream_)); |
stream_.codec = &codec_context_; |
@@ -151,6 +156,13 @@ TEST_F(FFmpegVideoDecodeEngineTest, Initialize_OpenDecoderFails) { |
TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_Normal) { |
Initialize(); |
+ // We rely on FFmpeg for timestamp and duration reporting. The one tricky |
+ // bit is calculating the duration when |repeat_pict| > 0. |
+ const base::TimeDelta kTimestamp = base::TimeDelta::FromMicroseconds(123); |
+ const base::TimeDelta kDuration = base::TimeDelta::FromMicroseconds(15000); |
+ yuv_frame_.repeat_pict = 1; |
+ yuv_frame_.reordered_opaque = kTimestamp.InMicroseconds(); |
+ |
// Expect a bunch of avcodec calls. |
EXPECT_CALL(mock_ffmpeg_, AVInitPacket(_)); |
EXPECT_CALL(mock_ffmpeg_, |
@@ -166,6 +178,10 @@ TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_Normal) { |
test_engine_->DecodeFrame(buffer_, &video_frame, &got_result, |
done_cb.CreateTask()); |
EXPECT_TRUE(got_result); |
+ EXPECT_EQ(kTimestamp.InMicroseconds(), |
+ video_frame->GetTimestamp().ToInternalValue()); |
+ EXPECT_EQ(kDuration.ToInternalValue(), |
+ video_frame->GetDuration().ToInternalValue()); |
} |
TEST_F(FFmpegVideoDecodeEngineTest, DecodeFrame_0ByteFrame) { |