| Index: media/filters/ffmpeg_demuxer_unittest.cc
|
| diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
|
| index 167a21225cee2570353206e49f630fadd0aa4b04..e0fa404a245ad61f9376cd13499849f1b6ab0f76 100644
|
| --- a/media/filters/ffmpeg_demuxer_unittest.cc
|
| +++ b/media/filters/ffmpeg_demuxer_unittest.cc
|
| @@ -409,21 +409,30 @@ TEST(FFmpegDemuxerTest, DISABLED_InitializeStreams) {
|
| // TODO(scherkus): http://crbug.com/10863
|
| TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
| // Prepare some test data.
|
| + const int kPacketData = 0;
|
| + const int kPacketAudio = 1;
|
| + const int kPacketVideo = 2;
|
| const int kAudio = 0;
|
| const int kVideo = 1;
|
| const size_t kDataSize = 4;
|
| uint8 audio_data[kDataSize] = {0, 1, 2, 3};
|
| uint8 video_data[kDataSize] = {4, 5, 6, 7};
|
|
|
| - // Simulate media with a an audio stream and video stream.
|
| + // Simulate media with a data stream, audio stream and video stream. Having
|
| + // the data stream first forces the audio and video streams to get remapped
|
| + // from indices {1,2} to {0,1} respectively, which covers an important test
|
| + // case.
|
| InitializeFFmpegMocks();
|
| - g_format.nb_streams = 2;
|
| - g_format.streams[kAudio] = &g_streams[kAudio];
|
| - g_format.streams[kVideo] = &g_streams[kVideo];
|
| - g_streams[kAudio].duration = 10;
|
| - g_streams[kAudio].codec = &g_audio_codec;
|
| - g_streams[kVideo].duration = 10;
|
| - g_streams[kVideo].codec = &g_video_codec;
|
| + g_format.nb_streams = 3;
|
| + g_format.streams[kPacketData] = &g_streams[0];
|
| + g_format.streams[kPacketAudio] = &g_streams[1];
|
| + g_format.streams[kPacketVideo] = &g_streams[2];
|
| + g_streams[0].duration = 10;
|
| + g_streams[0].codec = &g_data_codec;
|
| + g_streams[1].duration = 10;
|
| + g_streams[1].codec = &g_audio_codec;
|
| + g_streams[2].duration = 10;
|
| + g_streams[2].codec = &g_video_codec;
|
|
|
| // Create our pipeline.
|
| MockPipeline pipeline;
|
| @@ -455,8 +464,13 @@ TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
| ASSERT_TRUE(audio_stream);
|
| ASSERT_TRUE(video_stream);
|
|
|
| + // Prepare data packets, which should all get immediately released.
|
| + PacketQueue::get()->Enqueue(kPacketData, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketData, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketData, kDataSize, audio_data);
|
| +
|
| // Prepare our test audio packet.
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
|
|
| // Attempt a read from the audio stream and run the message loop until done.
|
| scoped_refptr<TestReader> reader(new TestReader());
|
| @@ -470,7 +484,7 @@ TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
| EXPECT_EQ(kDataSize, reader->buffer()->GetDataSize());
|
|
|
| // Prepare our test video packet.
|
| - PacketQueue::get()->Enqueue(kVideo, kDataSize, video_data);
|
| + PacketQueue::get()->Enqueue(kPacketVideo, kDataSize, video_data);
|
|
|
| // Attempt a read from the video stream and run the message loop until done.
|
| reader->Reset();
|
| @@ -502,8 +516,8 @@ TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
| // reads should not.
|
|
|
| // Prepare our test audio packet.
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
|
|
| // Audio read #1, should be discontinuous.
|
| reader = new TestReader();
|
| @@ -528,8 +542,8 @@ TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
| EXPECT_EQ(kDataSize, reader->buffer()->GetDataSize());
|
|
|
| // Prepare our test video packet.
|
| - PacketQueue::get()->Enqueue(kVideo, kDataSize, video_data);
|
| - PacketQueue::get()->Enqueue(kVideo, kDataSize, video_data);
|
| + PacketQueue::get()->Enqueue(kPacketVideo, kDataSize, video_data);
|
| + PacketQueue::get()->Enqueue(kPacketVideo, kDataSize, video_data);
|
|
|
| // Video read #1, should be discontinuous.
|
| reader->Reset();
|
| @@ -559,10 +573,10 @@ TEST(FFmpegDemuxerTest, DISABLED_ReadAndSeek) {
|
|
|
| // Let's trigger another simple forward seek, but with outstanding packets.
|
| // The outstanding packets should get freed after the Seek() is issued.
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| - PacketQueue::get()->Enqueue(kAudio, kDataSize, audio_data);
|
| - PacketQueue::get()->Enqueue(kVideo, kDataSize, video_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketAudio, kDataSize, audio_data);
|
| + PacketQueue::get()->Enqueue(kPacketVideo, kDataSize, video_data);
|
|
|
| // Attempt a read from video stream, which will force the demuxer to queue
|
| // the audio packets preceding the video packet.
|
|
|