Chromium Code Reviews| Index: media/filters/chunk_demuxer_unittest.cc |
| diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc |
| index 0f6a5ac85664b7b4b56a29ce5b357d572ec0097a..684321e4fb43513f9b68599c544da52410c73773 100644 |
| --- a/media/filters/chunk_demuxer_unittest.cc |
| +++ b/media/filters/chunk_demuxer_unittest.cc |
| @@ -1010,8 +1010,17 @@ class ChunkDemuxerTest : public ::testing::Test { |
| return cb.Finish(); |
| } |
| + DemuxerStream* GetStream(DemuxerStream::Type type) { |
|
xhwang
2017/02/01 18:26:04
ditto about TODO
Do we have tests for multiple st
servolk
2017/02/01 22:29:17
In this CL I have modified a FFmpegDemuxerTest::In
|
| + std::vector<DemuxerStream*> streams = demuxer_->GetStreams(); |
| + for (const auto& s : streams) { |
| + if (s->type() == type) |
| + return s; |
| + } |
| + return nullptr; |
| + } |
| + |
| void Read(DemuxerStream::Type type, const DemuxerStream::ReadCB& read_cb) { |
| - demuxer_->GetStream(type)->Read(read_cb); |
| + GetStream(type)->Read(read_cb); |
| base::RunLoop().RunUntilIdle(); |
| } |
| @@ -1097,7 +1106,7 @@ class ChunkDemuxerTest : public ::testing::Test { |
| void CheckExpectedRanges(DemuxerStream::Type type, |
| const std::string& expected) { |
| ChunkDemuxerStream* stream = |
| - static_cast<ChunkDemuxerStream*>(demuxer_->GetStream(type)); |
| + static_cast<ChunkDemuxerStream*>(GetStream(type)); |
| CheckExpectedRanges(stream->GetBufferedRanges(kDefaultDuration()), |
| expected); |
| } |
| @@ -1128,7 +1137,7 @@ class ChunkDemuxerTest : public ::testing::Test { |
| void ReadUntilNotOkOrEndOfStream(DemuxerStream::Type type, |
| DemuxerStream::Status* status, |
| base::TimeDelta* last_timestamp) { |
| - DemuxerStream* stream = demuxer_->GetStream(type); |
| + DemuxerStream* stream = GetStream(type); |
| scoped_refptr<DecoderBuffer> buffer; |
| *last_timestamp = kNoTimestamp; |
| @@ -1143,23 +1152,23 @@ class ChunkDemuxerTest : public ::testing::Test { |
| void ExpectEndOfStream(DemuxerStream::Type type) { |
| EXPECT_CALL(*this, ReadDone(DemuxerStream::kOk, IsEndOfStream())); |
| - demuxer_->GetStream(type)->Read(base::Bind( |
| - &ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| + GetStream(type)->Read( |
| + base::Bind(&ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| base::RunLoop().RunUntilIdle(); |
| } |
| void ExpectRead(DemuxerStream::Type type, int64_t timestamp_in_ms) { |
| EXPECT_CALL(*this, ReadDone(DemuxerStream::kOk, |
| HasTimestamp(timestamp_in_ms))); |
| - demuxer_->GetStream(type)->Read(base::Bind( |
| - &ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| + GetStream(type)->Read( |
| + base::Bind(&ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| base::RunLoop().RunUntilIdle(); |
| } |
| void ExpectConfigChanged(DemuxerStream::Type type) { |
| EXPECT_CALL(*this, ReadDone(DemuxerStream::kConfigChanged, _)); |
| - demuxer_->GetStream(type)->Read(base::Bind( |
| - &ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| + GetStream(type)->Read( |
| + base::Bind(&ChunkDemuxerTest::ReadDone, base::Unretained(this))); |
| base::RunLoop().RunUntilIdle(); |
| } |
| @@ -1357,7 +1366,7 @@ TEST_F(ChunkDemuxerTest, Init) { |
| stream_flags, is_audio_encrypted, is_video_encrypted)); |
| } |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| if (has_audio) { |
| ASSERT_TRUE(audio_stream); |
| @@ -1376,7 +1385,7 @@ TEST_F(ChunkDemuxerTest, Init) { |
| EXPECT_FALSE(audio_stream); |
| } |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| if (has_video) { |
| EXPECT_TRUE(video_stream); |
| EXPECT_EQ(is_video_encrypted, |
| @@ -1426,7 +1435,7 @@ TEST_F(ChunkDemuxerTest, InitText) { |
| EXPECT_FALSE(static_cast<ChunkDemuxerStream*>(text_stream) |
| ->supports_partial_append_window_trimming()); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| if (has_audio) { |
| ASSERT_TRUE(audio_stream); |
| @@ -1445,7 +1454,7 @@ TEST_F(ChunkDemuxerTest, InitText) { |
| EXPECT_FALSE(audio_stream); |
| } |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| if (has_video) { |
| EXPECT_TRUE(video_stream); |
| EXPECT_EQ(is_video_encrypted, |
| @@ -1473,8 +1482,8 @@ TEST_F(ChunkDemuxerTest, SingleTextTrackIdChange) { |
| SaveArg<1>(&text_config))); |
| ASSERT_TRUE(InitDemuxerWithEncryptionInfo( |
| HAS_TEXT | HAS_AUDIO | HAS_VIDEO, false, false)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| ASSERT_TRUE(audio_stream); |
| ASSERT_TRUE(video_stream); |
| ASSERT_TRUE(text_stream); |
| @@ -1516,8 +1525,8 @@ TEST_F(ChunkDemuxerTest, AudioVideoTrackIdsChange) { |
| CreateNewDemuxer(); |
| ASSERT_TRUE( |
| InitDemuxerWithEncryptionInfo(HAS_AUDIO | HAS_VIDEO, false, false)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| ASSERT_TRUE(audio_stream); |
| ASSERT_TRUE(video_stream); |
| @@ -1551,8 +1560,8 @@ TEST_F(ChunkDemuxerTest, InitSegmentSetsNeedRandomAccessPointFlag) { |
| .WillOnce(SaveArg<0>(&text_stream)); |
| ASSERT_TRUE(InitDemuxerWithEncryptionInfo( |
| HAS_TEXT | HAS_AUDIO | HAS_VIDEO, false, false)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| ASSERT_TRUE(audio_stream && video_stream && text_stream); |
| AppendMuxedCluster( |
| @@ -1618,8 +1627,8 @@ TEST_F(ChunkDemuxerTest, Shutdown_EndOfStreamWhileWaitingForData) { |
| .WillOnce(SaveArg<0>(&text_stream)); |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO | HAS_TEXT)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| bool audio_read_done = false; |
| bool video_read_done = false; |
| @@ -1739,8 +1748,8 @@ TEST_F(ChunkDemuxerTest, Read) { |
| TEST_F(ChunkDemuxerTest, OutOfOrderClusters) { |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| ASSERT_TRUE(AppendCluster(kDefaultFirstCluster())); |
| CheckExpectedBuffers(audio_stream, "0K 23K"); |
| @@ -1920,22 +1929,19 @@ TEST_F(ChunkDemuxerTest, NetworkErrorEndOfStream) { |
| // Read() behavior. |
| class EndOfStreamHelper { |
| public: |
| - explicit EndOfStreamHelper(Demuxer* demuxer) |
| - : demuxer_(demuxer), |
| + explicit EndOfStreamHelper(DemuxerStream* audio, DemuxerStream* video) |
| + : audio_stream_(audio), |
| + video_stream_(video), |
| audio_read_done_(false), |
| - video_read_done_(false) { |
| - } |
| + video_read_done_(false) {} |
| // Request a read on the audio and video streams. |
| void RequestReads() { |
| EXPECT_FALSE(audio_read_done_); |
| EXPECT_FALSE(video_read_done_); |
| - DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
| - |
| - audio->Read(base::Bind(&OnEndOfStreamReadDone, &audio_read_done_)); |
| - video->Read(base::Bind(&OnEndOfStreamReadDone, &video_read_done_)); |
| + audio_stream_->Read(base::Bind(&OnEndOfStreamReadDone, &audio_read_done_)); |
| + video_stream_->Read(base::Bind(&OnEndOfStreamReadDone, &video_read_done_)); |
| base::RunLoop().RunUntilIdle(); |
| } |
| @@ -1957,7 +1963,8 @@ class EndOfStreamHelper { |
| *called = true; |
| } |
| - Demuxer* demuxer_; |
| + DemuxerStream* audio_stream_; |
| + DemuxerStream* video_stream_; |
| bool audio_read_done_; |
| bool video_read_done_; |
| @@ -1973,8 +1980,10 @@ TEST_F(ChunkDemuxerTest, EndOfStreamWithPendingReads) { |
| bool audio_read_done_1 = false; |
| bool video_read_done_1 = false; |
| - EndOfStreamHelper end_of_stream_helper_1(demuxer_.get()); |
| - EndOfStreamHelper end_of_stream_helper_2(demuxer_.get()); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| + EndOfStreamHelper end_of_stream_helper_1(audio_stream, video_stream); |
| + EndOfStreamHelper end_of_stream_helper_2(audio_stream, video_stream); |
| ReadAudio(base::Bind(&OnReadDone, |
| base::TimeDelta::FromMilliseconds(0), |
| @@ -2008,9 +2017,11 @@ TEST_F(ChunkDemuxerTest, ReadsAfterEndOfStream) { |
| bool audio_read_done_1 = false; |
| bool video_read_done_1 = false; |
| - EndOfStreamHelper end_of_stream_helper_1(demuxer_.get()); |
| - EndOfStreamHelper end_of_stream_helper_2(demuxer_.get()); |
| - EndOfStreamHelper end_of_stream_helper_3(demuxer_.get()); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| + EndOfStreamHelper end_of_stream_helper_1(audio_stream, video_stream); |
| + EndOfStreamHelper end_of_stream_helper_2(audio_stream, video_stream); |
| + EndOfStreamHelper end_of_stream_helper_3(audio_stream, video_stream); |
| ReadAudio(base::Bind(&OnReadDone, |
| base::TimeDelta::FromMilliseconds(0), |
| @@ -2183,9 +2194,9 @@ TEST_F(ChunkDemuxerTest, WebMFile_LiveAudioAndVideo) { |
| ASSERT_TRUE(ParseWebMFile("bear-320x240-live.webm", buffer_timestamps, |
| kInfiniteDuration)); |
| - DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio = GetStream(DemuxerStream::AUDIO); |
| EXPECT_EQ(DemuxerStream::LIVENESS_LIVE, audio->liveness()); |
| - DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video = GetStream(DemuxerStream::VIDEO); |
| EXPECT_EQ(DemuxerStream::LIVENESS_LIVE, video->liveness()); |
| EXPECT_EQ(212949, demuxer_->GetMemoryUsage()); |
| } |
| @@ -2485,7 +2496,7 @@ TEST_F(ChunkDemuxerTest, RemoveId) { |
| // Audio stream will become inaccessible after |audio_id| is removed, so save |
| // it here to read from it after RemoveId. |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| // Remove the audio id. |
| demuxer_->RemoveId(audio_id); |
| @@ -3173,7 +3184,9 @@ TEST_F(ChunkDemuxerTest, EndOfStreamDuringSeek) { |
| GenerateExpectedReads(0, 4); |
| GenerateExpectedReads(46, 66, 5); |
| - EndOfStreamHelper end_of_stream_helper(demuxer_.get()); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| + EndOfStreamHelper end_of_stream_helper(audio_stream, video_stream); |
| end_of_stream_helper.RequestReads(); |
| end_of_stream_helper.CheckIfReadDonesWereCalled(true); |
| } |
| @@ -3186,7 +3199,7 @@ TEST_F(ChunkDemuxerTest, ConfigChange_Video) { |
| DemuxerStream::Status status; |
| base::TimeDelta last_timestamp; |
| - DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video = GetStream(DemuxerStream::VIDEO); |
| // Fetch initial video config and verify it matches what we expect. |
| const VideoDecoderConfig& video_config_1 = video->video_decoder_config(); |
| @@ -3233,7 +3246,7 @@ TEST_F(ChunkDemuxerTest, ConfigChange_Audio) { |
| DemuxerStream::Status status; |
| base::TimeDelta last_timestamp; |
| - DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio = GetStream(DemuxerStream::AUDIO); |
| // Fetch initial audio config and verify it matches what we expect. |
| const AudioDecoderConfig& audio_config_1 = audio->audio_decoder_config(); |
| @@ -3272,7 +3285,7 @@ TEST_F(ChunkDemuxerTest, ConfigChange_Seek) { |
| ASSERT_TRUE(InitDemuxerWithConfigChangeData()); |
| - DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video = GetStream(DemuxerStream::VIDEO); |
| // Fetch initial video config and verify it matches what we expect. |
| const VideoDecoderConfig& video_config_1 = video->video_decoder_config(); |
| @@ -3985,7 +3998,7 @@ TEST_F(ChunkDemuxerTest, GCKeepPlayhead) { |
| TEST_F(ChunkDemuxerTest, AppendWindow_Video) { |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* stream = GetStream(DemuxerStream::VIDEO); |
| // Set the append window to [50,280). |
| append_window_start_for_next_append_ = base::TimeDelta::FromMilliseconds(50); |
| @@ -4015,7 +4028,7 @@ TEST_F(ChunkDemuxerTest, AppendWindow_Video) { |
| TEST_F(ChunkDemuxerTest, AppendWindow_Audio) { |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); |
| - DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* stream = GetStream(DemuxerStream::AUDIO); |
| // Set the append window to [50,280). |
| append_window_start_for_next_append_ = base::TimeDelta::FromMilliseconds(50); |
| @@ -4088,7 +4101,7 @@ TEST_F(ChunkDemuxerTest, AppendWindow_WebMFile_AudioOnly) { |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(2)); |
| ASSERT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 128)); |
| - DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* stream = GetStream(DemuxerStream::AUDIO); |
| CheckExpectedBuffers(stream, "50KP 50K 62K 86K 109K 122K 125K 128K"); |
| } |
| @@ -4116,7 +4129,7 @@ TEST_F(ChunkDemuxerTest, AppendWindow_AudioConfigUpdateRemovesPreroll) { |
| ASSERT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); |
| CheckExpectedRanges("{ }"); |
| - DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* stream = GetStream(DemuxerStream::AUDIO); |
| AudioDecoderConfig config_1 = stream->audio_decoder_config(); |
| // Read a second WebM with a different config in and append the data. |
| @@ -4140,7 +4153,7 @@ TEST_F(ChunkDemuxerTest, AppendWindow_Text) { |
| EXPECT_CALL(host_, AddTextStream(_, _)) |
| .WillOnce(SaveArg<0>(&text_stream)); |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO | HAS_TEXT)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| // Set the append window to [20,280). |
| append_window_start_for_next_append_ = base::TimeDelta::FromMilliseconds(20); |
| @@ -4191,8 +4204,8 @@ TEST_F(ChunkDemuxerTest, Remove_AudioVideoText) { |
| .WillOnce(SaveArg<0>(&text_stream)); |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO | HAS_TEXT)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| AppendMuxedCluster( |
| MuxedStreamInfo(kAudioTrackNum, "0K 20K 40K 60K 80K 100K 120K 140K", 20), |
| @@ -4225,7 +4238,7 @@ TEST_F(ChunkDemuxerTest, Remove_AudioVideoText) { |
| TEST_F(ChunkDemuxerTest, Remove_StartAtDuration) { |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| // Set the duration to something small so that the append that |
| // follows updates the duration to reflect the end of the appended data. |
| @@ -4259,8 +4272,8 @@ TEST_F(ChunkDemuxerTest, SeekCompletesWithoutTextCues) { |
| .WillOnce(SaveArg<0>(&text_stream)); |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO | HAS_TEXT)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(120); |
| bool seek_cb_was_called = false; |
| @@ -4348,8 +4361,8 @@ TEST_F(ChunkDemuxerTest, EvictCodedFramesTest) { |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| demuxer_->SetMemoryLimitsForTest(DemuxerStream::AUDIO, 10 * kBlockSize); |
| demuxer_->SetMemoryLimitsForTest(DemuxerStream::VIDEO, 15 * kBlockSize); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| const char* kAudioStreamInfo = "0K 40K 80K 120K 160K 200K 240K 280K"; |
| const char* kVideoStreamInfo = "0K 10 20K 30 40K 50 60K 70 80K 90 100K " |
| @@ -4429,7 +4442,7 @@ TEST_F(ChunkDemuxerTest, RelaxedKeyframe_FirstSegmentMissingKeyframe) { |
| // Append V:[n n n][n n K] |
| // Expect V: [K] |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(10)).Times(2); |
| AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "0 10 20"); |
| @@ -4442,7 +4455,7 @@ TEST_F(ChunkDemuxerTest, RelaxedKeyframe_SecondSegmentMissingKeyframe) { |
| // Append V:[K n n][n n n] |
| // Expect V:[K n n][n n n] |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(10)).Times(2); |
| AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "0K 10 20"); |
| @@ -4457,7 +4470,7 @@ TEST_F(ChunkDemuxerTest, RelaxedKeyframe_RemoveInterruptsCodedFrameGroup_1) { |
| // Append V: [n n n][n K n] |
| // Expect: [K n] |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(10)).Times(3); |
| AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "0K 10 20"); |
| @@ -4474,7 +4487,7 @@ TEST_F(ChunkDemuxerTest, RelaxedKeyframe_RemoveInterruptsCodedFrameGroup_2) { |
| // Remove * |
| // Expect: [K n] |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(10)).Times(3); |
| AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "0K 10 20"); |
| @@ -4491,7 +4504,7 @@ TEST_F(ChunkDemuxerTest, RelaxedKeyframe_RemoveInterruptsCodedFrameGroup_3) { |
| // Remove * |
| // Expect: [K n n..n n] [K n] |
| ASSERT_TRUE(InitDemuxer(HAS_VIDEO)); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(WebMSimpleBlockDurationEstimated(10)).Times(3); |
| AppendSingleStreamCluster(kSourceId, kVideoTrackNum, "0K 10 20"); |
| @@ -4518,8 +4531,8 @@ TEST_F(ChunkDemuxerTest, |
| // A: [K K K][K K K] |
| // V [K n] |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| AppendMuxedCluster(MuxedStreamInfo(kAudioTrackNum, "0K 10K 20D10K"), |
| MuxedStreamInfo(kVideoTrackNum, "0K 10 20", 10)); |
| @@ -4552,8 +4565,8 @@ TEST_F(ChunkDemuxerTest, |
| // jagged cluster start and not badly muxed clusters as used to |
| // simulate a jagged start in this test.) |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_MEDIA_LOG(SegmentMissingFrames("1")); |
| AppendMuxedCluster(MuxedStreamInfo(kAudioTrackNum, "0K 10K 20D10K"), |
| @@ -4584,8 +4597,8 @@ TEST_F(ChunkDemuxerTest, |
| // A: [K K K K K K] |
| // V [..............K n] |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| std::vector<MuxedStreamInfo> msi(2); |
| msi[0] = |
| @@ -4641,14 +4654,14 @@ void OnStreamStatusChanged(base::WaitableEvent* event, |
| event->Signal(); |
| } |
| -void CheckStreamStatusNotifications(DemuxerStream* stream) { |
| +void CheckStreamStatusNotifications(MediaResource* media_resource, |
| + DemuxerStream* stream) { |
| base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| base::WaitableEvent::InitialState::NOT_SIGNALED); |
| ASSERT_TRUE(stream->enabled()); |
| - stream->SetStreamStatusChangeCB(base::Bind(&OnStreamStatusChanged, |
| - base::Unretained(&event), |
| - base::Unretained(stream))); |
| + media_resource->SetStreamStatusChangeCB( |
| + base::Bind(&OnStreamStatusChanged, base::Unretained(&event))); |
| stream->set_enabled(false, base::TimeDelta()); |
| base::RunLoop().RunUntilIdle(); |
| @@ -4662,12 +4675,12 @@ void CheckStreamStatusNotifications(DemuxerStream* stream) { |
| TEST_F(ChunkDemuxerTest, StreamStatusNotifications) { |
| ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
| - DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| + DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); |
| EXPECT_NE(nullptr, audio_stream); |
| - CheckStreamStatusNotifications(audio_stream); |
| - DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + CheckStreamStatusNotifications(demuxer_.get(), audio_stream); |
| + DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); |
| EXPECT_NE(nullptr, video_stream); |
| - CheckStreamStatusNotifications(video_stream); |
| + CheckStreamStatusNotifications(demuxer_.get(), video_stream); |
| } |
| TEST_F(ChunkDemuxerTest, MultipleIds) { |
| @@ -4737,13 +4750,13 @@ TEST_F(ChunkDemuxerTest, RemovingIdMustRemoveStreams) { |
| // Append init segment to ensure demuxer streams get created. |
| ASSERT_TRUE(AppendInitSegmentWithSourceId(kId1, HAS_AUDIO | HAS_VIDEO)); |
| - EXPECT_NE(nullptr, demuxer_->GetStream(DemuxerStream::AUDIO)); |
| - EXPECT_NE(nullptr, demuxer_->GetStream(DemuxerStream::VIDEO)); |
| + EXPECT_NE(nullptr, GetStream(DemuxerStream::AUDIO)); |
| + EXPECT_NE(nullptr, GetStream(DemuxerStream::VIDEO)); |
| // Removing the id should remove also the DemuxerStreams. |
| demuxer_->RemoveId(kId1); |
| - EXPECT_EQ(nullptr, demuxer_->GetStream(DemuxerStream::AUDIO)); |
| - EXPECT_EQ(nullptr, demuxer_->GetStream(DemuxerStream::VIDEO)); |
| + EXPECT_EQ(nullptr, GetStream(DemuxerStream::AUDIO)); |
| + EXPECT_EQ(nullptr, GetStream(DemuxerStream::VIDEO)); |
| } |
| // TODO(servolk): Add a unit test with multiple audio/video tracks using the |