| 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 |