Chromium Code Reviews| Index: media/filters/ffmpeg_demuxer_unittest.cc |
| diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc |
| index f5b0e978fe4174b04afd192695c863600fe18938..758811f67c257643a45f1ac78bd0a537f1bc5b82 100644 |
| --- a/media/filters/ffmpeg_demuxer_unittest.cc |
| +++ b/media/filters/ffmpeg_demuxer_unittest.cc |
| @@ -72,7 +72,7 @@ class FFmpegDemuxerTest : public testing::Test { |
| } |
| } |
| - void CreateDemuxer(const std::string& name) { |
| + void CreateDemuxerText(const std::string& name, bool enable_text) { |
| CHECK(!demuxer_); |
| EXPECT_CALL(host_, SetTotalBytes(_)).Times(AnyNumber()); |
| @@ -83,12 +83,25 @@ class FFmpegDemuxerTest : public testing::Test { |
| Demuxer::NeedKeyCB need_key_cb = |
| base::Bind(&FFmpegDemuxerTest::NeedKeyCB, base::Unretained(this)); |
| + |
| + media::FFmpegAddTextTrackCB add_text_track_cb; |
| + if (enable_text) { |
| + add_text_track_cb = |
| + base::Bind(&FFmpegDemuxerTest::AddTextTrackCB, |
| + base::Unretained(this)); |
| + } |
| + |
| demuxer_.reset(new FFmpegDemuxer(message_loop_.message_loop_proxy(), |
| data_source_.get(), |
| need_key_cb, |
| + add_text_track_cb, |
| new MediaLog())); |
| } |
| + void CreateDemuxer(const std::string& name) { |
| + CreateDemuxerText(name, false); |
| + } |
| + |
| MOCK_METHOD1(CheckPoint, void(int v)); |
| void InitializeDemuxer() { |
| @@ -141,6 +154,12 @@ class FFmpegDemuxerTest : public testing::Test { |
| NeedKeyCBMock(type, init_data_ptr, init_data.size()); |
| } |
| + void AddTextTrackCB(media::TextKind kind, |
| + const std::string& label, |
| + const std::string& language, |
| + int index) { |
| + } |
| + |
| // Accessor to demuxer internals. |
| void set_duration_known(bool duration_known) { |
| demuxer_->duration_known_ = duration_known; |
| @@ -298,6 +317,76 @@ TEST_F(FFmpegDemuxerTest, Initialize_Multitrack) { |
| EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); |
| } |
| +TEST_F(FFmpegDemuxerTest, Initialize_MultitrackText) { |
| + // Open a file containing the following streams: |
| + // Stream #0: Video (VP8) |
| + // Stream #1: Audio (Vorbis) |
| + // Stream #2: Text (WebVTT) |
| + |
| + CreateDemuxerText("bear-vp8-webvtt.webm", true); |
| + InitializeDemuxer(); |
| + |
| + // Video stream should be VP8. |
| + DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::VIDEO, stream->type()); |
| + EXPECT_EQ(kCodecVP8, stream->video_decoder_config().codec()); |
| + |
| + // Audio stream should be Vorbis. |
| + stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::AUDIO, stream->type()); |
| + EXPECT_EQ(kCodecVorbis, stream->audio_decoder_config().codec()); |
| + |
| + // Text stream should also be present. |
| + stream = demuxer_->GetStream(DemuxerStream::TEXT); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::TEXT, stream->type()); |
| + |
| + // Unknown stream should never be present. |
| + EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); |
| +} |
| + |
| +// TODO(matthewjheaney): Enable this test when the binary file lands. |
| +TEST_F(FFmpegDemuxerTest, DISABLED_Initialize_MultitrackTwoTextStreams) { |
| + // Open a file containing the following streams: |
| + // Stream #0: Video (VP8) |
| + // Stream #1: Audio (Vorbis) |
| + // Stream #2: Text (WebVTT) |
| + // Stream #3: Text (WebVTT) |
| + |
| + CreateDemuxerText("bear-vp8-webvtt2.webm", true); |
| + InitializeDemuxer(); |
| + |
| + int stream_count = demuxer_->GetStreamCount(); |
| + EXPECT_EQ(4, stream_count); |
|
acolwell GONE FROM CHROMIUM
2013/09/12 00:15:15
nit: inline here since the count isn't used anywhe
Matthew Heaney (Chromium)
2013/09/13 19:51:54
Done.
Matthew Heaney (Chromium)
2013/09/20 23:53:54
This is OBE anyway, since GetStreamCount and frien
|
| + |
| + // Video stream should be VP8. |
| + DemuxerStream* stream = demuxer_->GetStreamByIndex(0); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::VIDEO, stream->type()); |
| + EXPECT_EQ(kCodecVP8, stream->video_decoder_config().codec()); |
| + |
| + // Audio stream should be Vorbis. |
| + stream = demuxer_->GetStreamByIndex(1); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::AUDIO, stream->type()); |
| + EXPECT_EQ(kCodecVorbis, stream->audio_decoder_config().codec()); |
| + |
| + // First text stream should be present. |
| + stream = demuxer_->GetStreamByIndex(2); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::TEXT, stream->type()); |
| + |
| + // Second text stream should be present. |
| + stream = demuxer_->GetStreamByIndex(3); |
| + ASSERT_TRUE(stream); |
| + EXPECT_EQ(DemuxerStream::TEXT, stream->type()); |
| + |
| + // Unknown stream should never be present. |
| + EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); |
| +} |
| + |
| TEST_F(FFmpegDemuxerTest, Initialize_Encrypted) { |
| EXPECT_CALL(*this, NeedKeyCBMock(kWebMEncryptInitDataType, NotNull(), |
| DecryptConfig::kDecryptionKeySize)) |