OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 #include <deque> | 6 #include <deque> |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 FFmpegDemuxerTest() {} | 65 FFmpegDemuxerTest() {} |
66 | 66 |
67 virtual ~FFmpegDemuxerTest() { | 67 virtual ~FFmpegDemuxerTest() { |
68 if (demuxer_) { | 68 if (demuxer_) { |
69 WaitableMessageLoopEvent event; | 69 WaitableMessageLoopEvent event; |
70 demuxer_->Stop(event.GetClosure()); | 70 demuxer_->Stop(event.GetClosure()); |
71 event.RunAndWait(); | 71 event.RunAndWait(); |
72 } | 72 } |
73 } | 73 } |
74 | 74 |
75 void CreateDemuxer(const std::string& name) { | 75 void CreateDemuxerText(const std::string& name, bool enable_text) { |
76 CHECK(!demuxer_); | 76 CHECK(!demuxer_); |
77 | 77 |
78 EXPECT_CALL(host_, SetTotalBytes(_)).Times(AnyNumber()); | 78 EXPECT_CALL(host_, SetTotalBytes(_)).Times(AnyNumber()); |
79 EXPECT_CALL(host_, AddBufferedByteRange(_, _)).Times(AnyNumber()); | 79 EXPECT_CALL(host_, AddBufferedByteRange(_, _)).Times(AnyNumber()); |
80 EXPECT_CALL(host_, AddBufferedTimeRange(_, _)).Times(AnyNumber()); | 80 EXPECT_CALL(host_, AddBufferedTimeRange(_, _)).Times(AnyNumber()); |
81 | 81 |
82 CreateDataSource(name); | 82 CreateDataSource(name); |
83 | 83 |
84 Demuxer::NeedKeyCB need_key_cb = | 84 Demuxer::NeedKeyCB need_key_cb = |
85 base::Bind(&FFmpegDemuxerTest::NeedKeyCB, base::Unretained(this)); | 85 base::Bind(&FFmpegDemuxerTest::NeedKeyCB, base::Unretained(this)); |
86 | |
86 demuxer_.reset(new FFmpegDemuxer(message_loop_.message_loop_proxy(), | 87 demuxer_.reset(new FFmpegDemuxer(message_loop_.message_loop_proxy(), |
87 data_source_.get(), | 88 data_source_.get(), |
88 need_key_cb, | 89 need_key_cb, |
90 enable_text, | |
89 new MediaLog())); | 91 new MediaLog())); |
90 } | 92 } |
91 | 93 |
94 void CreateDemuxer(const std::string& name) { | |
95 CreateDemuxerText(name, false); | |
96 } | |
97 | |
92 MOCK_METHOD1(CheckPoint, void(int v)); | 98 MOCK_METHOD1(CheckPoint, void(int v)); |
93 | 99 |
94 void InitializeDemuxer() { | 100 void InitializeDemuxer() { |
95 EXPECT_CALL(host_, SetDuration(_)); | 101 EXPECT_CALL(host_, SetDuration(_)); |
96 WaitableMessageLoopEvent event; | 102 WaitableMessageLoopEvent event; |
97 demuxer_->Initialize(&host_, event.GetPipelineStatusCB()); | 103 demuxer_->Initialize(&host_, event.GetPipelineStatusCB()); |
98 event.RunAndWaitForStatus(PIPELINE_OK); | 104 event.RunAndWaitForStatus(PIPELINE_OK); |
99 } | 105 } |
100 | 106 |
101 MOCK_METHOD2(OnReadDoneCalled, void(int, int64)); | 107 MOCK_METHOD2(OnReadDoneCalled, void(int, int64)); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
291 // Audio stream should be Vorbis. | 297 // Audio stream should be Vorbis. |
292 stream = demuxer_->GetStream(DemuxerStream::AUDIO); | 298 stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
293 ASSERT_TRUE(stream); | 299 ASSERT_TRUE(stream); |
294 EXPECT_EQ(DemuxerStream::AUDIO, stream->type()); | 300 EXPECT_EQ(DemuxerStream::AUDIO, stream->type()); |
295 EXPECT_EQ(kCodecVorbis, stream->audio_decoder_config().codec()); | 301 EXPECT_EQ(kCodecVorbis, stream->audio_decoder_config().codec()); |
296 | 302 |
297 // Unknown stream should never be present. | 303 // Unknown stream should never be present. |
298 EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); | 304 EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); |
299 } | 305 } |
300 | 306 |
307 TEST_F(FFmpegDemuxerTest, Initialize_MultitrackText) { | |
acolwell GONE FROM CHROMIUM
2013/10/24 18:57:51
This test should also be verifying that the proper
Matthew Heaney (Chromium)
2013/10/25 03:05:38
Agreed, but we removed the text stream map member
acolwell GONE FROM CHROMIUM
2013/10/25 03:56:19
Take a look at the gmock cookbook (https://code.go
Matthew Heaney (Chromium)
2013/10/27 01:44:00
Done.
| |
308 // Open a file containing the following streams: | |
309 // Stream #0: Video (VP8) | |
310 // Stream #1: Audio (Vorbis) | |
311 // Stream #2: Text (WebVTT) | |
312 | |
313 CreateDemuxerText("bear-vp8-webvtt.webm", true); | |
314 InitializeDemuxer(); | |
315 | |
316 // Video stream should be VP8. | |
317 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); | |
318 ASSERT_TRUE(stream); | |
319 EXPECT_EQ(DemuxerStream::VIDEO, stream->type()); | |
320 EXPECT_EQ(kCodecVP8, stream->video_decoder_config().codec()); | |
321 | |
322 // Audio stream should be Vorbis. | |
323 stream = demuxer_->GetStream(DemuxerStream::AUDIO); | |
324 ASSERT_TRUE(stream); | |
325 EXPECT_EQ(DemuxerStream::AUDIO, stream->type()); | |
326 EXPECT_EQ(kCodecVorbis, stream->audio_decoder_config().codec()); | |
327 | |
328 // Unknown stream should never be present. | |
329 EXPECT_FALSE(demuxer_->GetStream(DemuxerStream::UNKNOWN)); | |
330 } | |
331 | |
301 TEST_F(FFmpegDemuxerTest, Initialize_Encrypted) { | 332 TEST_F(FFmpegDemuxerTest, Initialize_Encrypted) { |
302 EXPECT_CALL(*this, NeedKeyCBMock(kWebMEncryptInitDataType, NotNull(), | 333 EXPECT_CALL(*this, NeedKeyCBMock(kWebMEncryptInitDataType, NotNull(), |
303 DecryptConfig::kDecryptionKeySize)) | 334 DecryptConfig::kDecryptionKeySize)) |
304 .Times(Exactly(2)); | 335 .Times(Exactly(2)); |
305 | 336 |
306 CreateDemuxer("bear-320x240-av_enc-av.webm"); | 337 CreateDemuxer("bear-320x240-av_enc-av.webm"); |
307 InitializeDemuxer(); | 338 InitializeDemuxer(); |
308 } | 339 } |
309 | 340 |
310 TEST_F(FFmpegDemuxerTest, Read_Audio) { | 341 TEST_F(FFmpegDemuxerTest, Read_Audio) { |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
576 TEST_F(FFmpegDemuxerTest, MP4_ZeroStszEntry) { | 607 TEST_F(FFmpegDemuxerTest, MP4_ZeroStszEntry) { |
577 #if !defined(USE_PROPRIETARY_CODECS) | 608 #if !defined(USE_PROPRIETARY_CODECS) |
578 return; | 609 return; |
579 #endif | 610 #endif |
580 CreateDemuxer("bear-1280x720-zero-stsz-entry.mp4"); | 611 CreateDemuxer("bear-1280x720-zero-stsz-entry.mp4"); |
581 InitializeDemuxer(); | 612 InitializeDemuxer(); |
582 ReadUntilEndOfStream(); | 613 ReadUntilEndOfStream(); |
583 } | 614 } |
584 | 615 |
585 } // namespace media | 616 } // namespace media |
OLD | NEW |