| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 : service_manager::test::ServiceTest( | 678 : service_manager::test::ServiceTest( |
| 679 "media_pipeline_integration_shelltests") {} | 679 "media_pipeline_integration_shelltests") {} |
| 680 | 680 |
| 681 void SetUp() override { | 681 void SetUp() override { |
| 682 ServiceTest::SetUp(); | 682 ServiceTest::SetUp(); |
| 683 InitializeMediaLibrary(); | 683 InitializeMediaLibrary(); |
| 684 } | 684 } |
| 685 | 685 |
| 686 protected: | 686 protected: |
| 687 std::unique_ptr<Renderer> CreateRenderer( | 687 std::unique_ptr<Renderer> CreateRenderer( |
| 688 ScopedVector<VideoDecoder> prepend_video_decoders, | 688 CreateVideoDecodersCB prepend_video_decoders_cb, |
| 689 ScopedVector<AudioDecoder> prepend_audio_decoders) override { | 689 CreateAudioDecodersCB prepend_audio_decoders_cb) override { |
| 690 connector()->BindInterface("media", &media_interface_factory_); | 690 connector()->BindInterface("media", &media_interface_factory_); |
| 691 | 691 |
| 692 mojom::RendererPtr mojo_renderer; | 692 mojom::RendererPtr mojo_renderer; |
| 693 media_interface_factory_->CreateRenderer(std::string(), | 693 media_interface_factory_->CreateRenderer(std::string(), |
| 694 mojo::MakeRequest(&mojo_renderer)); | 694 mojo::MakeRequest(&mojo_renderer)); |
| 695 | 695 |
| 696 return base::MakeUnique<MojoRenderer>(message_loop_.task_runner(), | 696 return base::MakeUnique<MojoRenderer>(message_loop_.task_runner(), |
| 697 std::move(mojo_renderer)); | 697 std::move(mojo_renderer)); |
| 698 } | 698 } |
| 699 | 699 |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1127 | 1127 |
| 1128 // Disable video track first, to re-enable it later and stop the pipeline | 1128 // Disable video track first, to re-enable it later and stop the pipeline |
| 1129 // (which destroys the media renderer) while video restart is pending. | 1129 // (which destroys the media renderer) while video restart is pending. |
| 1130 pipeline_->OnSelectedVideoTrackChanged(base::nullopt); | 1130 pipeline_->OnSelectedVideoTrackChanged(base::nullopt); |
| 1131 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(200))); | 1131 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(200))); |
| 1132 | 1132 |
| 1133 pipeline_->OnSelectedVideoTrackChanged(MediaTrack::Id("1")); | 1133 pipeline_->OnSelectedVideoTrackChanged(MediaTrack::Id("1")); |
| 1134 Stop(); | 1134 Stop(); |
| 1135 } | 1135 } |
| 1136 | 1136 |
| 1137 TEST_F(PipelineIntegrationTest, SwitchAudioTrackDuringPlayback) { |
| 1138 ASSERT_EQ(PIPELINE_OK, Start("multitrack-3video-2audio.webm", kHashed)); |
| 1139 Play(); |
| 1140 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(100))); |
| 1141 // The first audio track (TrackId=4) is enabled by default. This should |
| 1142 // disable TrackId=4 and enable TrackId=5. |
| 1143 std::vector<MediaTrack::Id> track_ids; |
| 1144 track_ids.push_back("5"); |
| 1145 pipeline_->OnEnabledAudioTracksChanged(track_ids); |
| 1146 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(200))); |
| 1147 Stop(); |
| 1148 } |
| 1149 |
| 1150 TEST_F(PipelineIntegrationTest, SwitchVideoTrackDuringPlayback) { |
| 1151 ASSERT_EQ(PIPELINE_OK, Start("multitrack-3video-2audio.webm", kHashed)); |
| 1152 Play(); |
| 1153 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(100))); |
| 1154 // The first video track (TrackId=1) is enabled by default. This should |
| 1155 // disable TrackId=1 and enable TrackId=2. |
| 1156 pipeline_->OnSelectedVideoTrackChanged(MediaTrack::Id("2")); |
| 1157 ASSERT_TRUE(WaitUntilCurrentTimeIsAfter(TimestampMs(200))); |
| 1158 Stop(); |
| 1159 } |
| 1160 |
| 1137 TEST_F(PipelineIntegrationTest, | 1161 TEST_F(PipelineIntegrationTest, |
| 1138 MAYBE_CLOCKLESS(BasicPlaybackOpusOggTrimmingHashed)) { | 1162 MAYBE_CLOCKLESS(BasicPlaybackOpusOggTrimmingHashed)) { |
| 1139 ASSERT_EQ(PIPELINE_OK, | 1163 ASSERT_EQ(PIPELINE_OK, |
| 1140 Start("opus-trimming-test.webm", kHashed | kClockless)); | 1164 Start("opus-trimming-test.webm", kHashed | kClockless)); |
| 1141 | 1165 |
| 1142 Play(); | 1166 Play(); |
| 1143 | 1167 |
| 1144 ASSERT_TRUE(WaitUntilOnEnded()); | 1168 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1145 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); | 1169 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); |
| 1146 | 1170 |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 #if BUILDFLAG(USE_PROPRIETARY_CODECS) | 1675 #if BUILDFLAG(USE_PROPRIETARY_CODECS) |
| 1652 | 1676 |
| 1653 TEST_F(PipelineIntegrationTest, BasicPlaybackHi10P) { | 1677 TEST_F(PipelineIntegrationTest, BasicPlaybackHi10P) { |
| 1654 ASSERT_EQ(PIPELINE_OK, Start("bear-320x180-hi10p.mp4", kClockless)); | 1678 ASSERT_EQ(PIPELINE_OK, Start("bear-320x180-hi10p.mp4", kClockless)); |
| 1655 | 1679 |
| 1656 Play(); | 1680 Play(); |
| 1657 | 1681 |
| 1658 ASSERT_TRUE(WaitUntilOnEnded()); | 1682 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1659 } | 1683 } |
| 1660 | 1684 |
| 1661 TEST_F(PipelineIntegrationTest, BasicFallback) { | 1685 ScopedVector<VideoDecoder> CreateFailingVideoDecoder() { |
| 1662 ScopedVector<VideoDecoder> failing_video_decoder; | 1686 ScopedVector<VideoDecoder> failing_video_decoder; |
| 1663 failing_video_decoder.push_back(new FailingVideoDecoder()); | 1687 failing_video_decoder.push_back(new FailingVideoDecoder()); |
| 1688 return failing_video_decoder; |
| 1689 } |
| 1664 | 1690 |
| 1665 ASSERT_EQ(PIPELINE_OK, | 1691 TEST_F(PipelineIntegrationTest, BasicFallback) { |
| 1666 Start("bear.mp4", kClockless, std::move(failing_video_decoder))); | 1692 ASSERT_EQ(PIPELINE_OK, Start("bear.mp4", kClockless, |
| 1693 base::Bind(&CreateFailingVideoDecoder))); |
| 1667 | 1694 |
| 1668 Play(); | 1695 Play(); |
| 1669 | 1696 |
| 1670 ASSERT_TRUE(WaitUntilOnEnded()); | 1697 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1671 }; | 1698 }; |
| 1672 | 1699 |
| 1673 TEST_F(PipelineIntegrationTest, MediaSource_ADTS) { | 1700 TEST_F(PipelineIntegrationTest, MediaSource_ADTS) { |
| 1674 MockMediaSource source("sfx.adts", kADTS, kAppendWholeFile); | 1701 MockMediaSource source("sfx.adts", kADTS, kAppendWholeFile); |
| 1675 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(&source)); | 1702 EXPECT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(&source)); |
| 1676 source.EndOfStream(); | 1703 source.EndOfStream(); |
| (...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2644 | 2671 |
| 2645 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 2672 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
| 2646 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 2673 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
| 2647 Play(); | 2674 Play(); |
| 2648 ASSERT_TRUE(WaitUntilOnEnded()); | 2675 ASSERT_TRUE(WaitUntilOnEnded()); |
| 2649 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 2676 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
| 2650 demuxer_->GetStartTime()); | 2677 demuxer_->GetStartTime()); |
| 2651 } | 2678 } |
| 2652 | 2679 |
| 2653 } // namespace media | 2680 } // namespace media |
| OLD | NEW |