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 "media/filters/chunk_demuxer.h" | 5 #include "media/filters/chunk_demuxer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <utility> | 10 #include <utility> |
(...skipping 4632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4643 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,91) }"); | 4643 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,91) }"); |
4644 CheckExpectedRanges("{ [30,90) }"); | 4644 CheckExpectedRanges("{ [30,90) }"); |
4645 CheckExpectedBuffers(audio_stream, "30K 40K 50K 60K 70K 80K"); | 4645 CheckExpectedBuffers(audio_stream, "30K 40K 50K 60K 70K 80K"); |
4646 CheckExpectedBuffers(video_stream, "71K 81"); | 4646 CheckExpectedBuffers(video_stream, "71K 81"); |
4647 } | 4647 } |
4648 | 4648 |
4649 void OnStreamStatusChanged(base::WaitableEvent* event, | 4649 void OnStreamStatusChanged(base::WaitableEvent* event, |
4650 DemuxerStream* stream, | 4650 DemuxerStream* stream, |
4651 bool enabled, | 4651 bool enabled, |
4652 base::TimeDelta) { | 4652 base::TimeDelta) { |
4653 EXPECT_EQ(enabled, stream->enabled()); | |
4654 event->Signal(); | 4653 event->Signal(); |
4655 } | 4654 } |
4656 | 4655 |
4657 void CheckStreamStatusNotifications(MediaResource* media_resource, | 4656 void CheckStreamStatusNotifications(MediaResource* media_resource, |
4658 DemuxerStream* stream) { | 4657 ChunkDemuxerStream* stream) { |
4659 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, | 4658 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
4660 base::WaitableEvent::InitialState::NOT_SIGNALED); | 4659 base::WaitableEvent::InitialState::NOT_SIGNALED); |
4661 | 4660 |
4662 ASSERT_TRUE(stream->enabled()); | 4661 ASSERT_TRUE(stream->enabled()); |
4663 media_resource->SetStreamStatusChangeCB( | 4662 media_resource->SetStreamStatusChangeCB( |
4664 base::Bind(&OnStreamStatusChanged, base::Unretained(&event))); | 4663 base::Bind(&OnStreamStatusChanged, base::Unretained(&event))); |
4665 | 4664 |
4666 stream->set_enabled(false, base::TimeDelta()); | 4665 stream->set_enabled(false, base::TimeDelta()); |
4667 base::RunLoop().RunUntilIdle(); | 4666 base::RunLoop().RunUntilIdle(); |
4668 ASSERT_TRUE(event.IsSignaled()); | 4667 ASSERT_TRUE(event.IsSignaled()); |
4669 | 4668 |
4670 event.Reset(); | 4669 event.Reset(); |
4671 stream->set_enabled(true, base::TimeDelta()); | 4670 stream->set_enabled(true, base::TimeDelta()); |
4672 base::RunLoop().RunUntilIdle(); | 4671 base::RunLoop().RunUntilIdle(); |
4673 ASSERT_TRUE(event.IsSignaled()); | 4672 ASSERT_TRUE(event.IsSignaled()); |
4674 } | 4673 } |
4675 | 4674 |
4676 TEST_F(ChunkDemuxerTest, StreamStatusNotifications) { | 4675 TEST_F(ChunkDemuxerTest, StreamStatusNotifications) { |
4677 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 4676 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
4678 DemuxerStream* audio_stream = GetStream(DemuxerStream::AUDIO); | 4677 ChunkDemuxerStream* audio_stream = |
| 4678 static_cast<ChunkDemuxerStream*>(GetStream(DemuxerStream::AUDIO)); |
4679 EXPECT_NE(nullptr, audio_stream); | 4679 EXPECT_NE(nullptr, audio_stream); |
4680 CheckStreamStatusNotifications(demuxer_.get(), audio_stream); | 4680 CheckStreamStatusNotifications(demuxer_.get(), audio_stream); |
4681 DemuxerStream* video_stream = GetStream(DemuxerStream::VIDEO); | 4681 ChunkDemuxerStream* video_stream = |
| 4682 static_cast<ChunkDemuxerStream*>(GetStream(DemuxerStream::VIDEO)); |
4682 EXPECT_NE(nullptr, video_stream); | 4683 EXPECT_NE(nullptr, video_stream); |
4683 CheckStreamStatusNotifications(demuxer_.get(), video_stream); | 4684 CheckStreamStatusNotifications(demuxer_.get(), video_stream); |
4684 } | 4685 } |
4685 | 4686 |
4686 TEST_F(ChunkDemuxerTest, MultipleIds) { | 4687 TEST_F(ChunkDemuxerTest, MultipleIds) { |
4687 CreateNewDemuxer(); | 4688 CreateNewDemuxer(); |
4688 EXPECT_CALL(*this, DemuxerOpened()); | 4689 EXPECT_CALL(*this, DemuxerOpened()); |
4689 EXPECT_CALL(host_, SetDuration(_)).Times(2); | 4690 EXPECT_CALL(host_, SetDuration(_)).Times(2); |
4690 demuxer_->Initialize(&host_, CreateInitDoneCB(kNoTimestamp, PIPELINE_OK), | 4691 demuxer_->Initialize(&host_, CreateInitDoneCB(kNoTimestamp, PIPELINE_OK), |
4691 true); | 4692 true); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4792 EXPECT_EQ( | 4793 EXPECT_EQ( |
4793 demuxer_->AddId("source_id", "video/mp4", "vp09.00.01.08.02.01.01.00"), | 4794 demuxer_->AddId("source_id", "video/mp4", "vp09.00.01.08.02.01.01.00"), |
4794 expected); | 4795 expected); |
4795 } | 4796 } |
4796 | 4797 |
4797 INSTANTIATE_TEST_CASE_P(EnableDisableMp4Vp9Demuxing, | 4798 INSTANTIATE_TEST_CASE_P(EnableDisableMp4Vp9Demuxing, |
4798 ChunkDemuxerMp4Vp9Test, | 4799 ChunkDemuxerMp4Vp9Test, |
4799 ::testing::Bool()); | 4800 ::testing::Bool()); |
4800 | 4801 |
4801 } // namespace media | 4802 } // namespace media |
OLD | NEW |