OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <memory> | 8 #include <memory> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "base/time/time.h" | 28 #include "base/time/time.h" |
29 #include "chromecast/base/task_runner_impl.h" | 29 #include "chromecast/base/task_runner_impl.h" |
30 #include "chromecast/media/cma/base/decoder_buffer_adapter.h" | 30 #include "chromecast/media/cma/base/decoder_buffer_adapter.h" |
31 #include "chromecast/media/cma/base/decoder_config_adapter.h" | 31 #include "chromecast/media/cma/base/decoder_config_adapter.h" |
32 #include "chromecast/media/cma/test/frame_segmenter_for_test.h" | 32 #include "chromecast/media/cma/test/frame_segmenter_for_test.h" |
33 #include "chromecast/public/cast_media_shlib.h" | 33 #include "chromecast/public/cast_media_shlib.h" |
34 #include "chromecast/public/media/cast_decoder_buffer.h" | 34 #include "chromecast/public/media/cast_decoder_buffer.h" |
35 #include "chromecast/public/media/decoder_config.h" | 35 #include "chromecast/public/media/decoder_config.h" |
36 #include "chromecast/public/media/media_pipeline_backend.h" | 36 #include "chromecast/public/media/media_pipeline_backend.h" |
37 #include "chromecast/public/media/media_pipeline_device_params.h" | 37 #include "chromecast/public/media/media_pipeline_device_params.h" |
| 38 #include "chromecast/public/volume_control.h" |
| 39 #include "media/audio/audio_device_description.h" |
38 #include "media/base/audio_decoder_config.h" | 40 #include "media/base/audio_decoder_config.h" |
39 #include "media/base/audio_timestamp_helper.h" | 41 #include "media/base/audio_timestamp_helper.h" |
40 #include "media/base/decoder_buffer.h" | 42 #include "media/base/decoder_buffer.h" |
41 #include "media/base/encryption_scheme.h" | 43 #include "media/base/encryption_scheme.h" |
42 #include "media/base/video_decoder_config.h" | 44 #include "media/base/video_decoder_config.h" |
43 #include "testing/gtest/include/gtest/gtest.h" | 45 #include "testing/gtest/include/gtest/gtest.h" |
44 | 46 |
45 namespace chromecast { | 47 namespace chromecast { |
46 namespace media { | 48 namespace media { |
47 | 49 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 void set_sync_type(MediaPipelineDeviceParams::MediaSyncType sync_type) { | 183 void set_sync_type(MediaPipelineDeviceParams::MediaSyncType sync_type) { |
182 sync_type_ = sync_type; | 184 sync_type_ = sync_type; |
183 } | 185 } |
184 void set_audio_type(MediaPipelineDeviceParams::AudioStreamType audio_type) { | 186 void set_audio_type(MediaPipelineDeviceParams::AudioStreamType audio_type) { |
185 audio_type_ = audio_type; | 187 audio_type_ = audio_type; |
186 } | 188 } |
187 | 189 |
188 void SetUp() override { | 190 void SetUp() override { |
189 CastMediaShlib::Initialize( | 191 CastMediaShlib::Initialize( |
190 base::CommandLine::ForCurrentProcess()->argv()); | 192 base::CommandLine::ForCurrentProcess()->argv()); |
| 193 if (VolumeControl::Initialize) { |
| 194 VolumeControl::Initialize(base::CommandLine::ForCurrentProcess()->argv()); |
| 195 } |
191 } | 196 } |
192 | 197 |
193 void TearDown() override { | 198 void TearDown() override { |
194 // Pipeline must be destroyed before finalizing media shlib. | 199 // Pipeline must be destroyed before finalizing media shlib. |
195 backend_.reset(); | 200 backend_.reset(); |
196 effects_backends_.clear(); | 201 effects_backends_.clear(); |
| 202 if (VolumeControl::Finalize) { |
| 203 VolumeControl::Finalize(); |
| 204 } |
197 CastMediaShlib::Finalize(); | 205 CastMediaShlib::Finalize(); |
198 } | 206 } |
199 | 207 |
200 void ConfigureForFile(const std::string& filename); | 208 void ConfigureForFile(const std::string& filename); |
201 void ConfigureForAudioOnly(const std::string& filename); | 209 void ConfigureForAudioOnly(const std::string& filename); |
202 void ConfigureForVideoOnly(const std::string& filename, bool raw_h264); | 210 void ConfigureForVideoOnly(const std::string& filename, bool raw_h264); |
203 | 211 |
204 // Pattern loops, waiting >= pattern[i].delay against media clock between | 212 // Pattern loops, waiting >= pattern[i].delay against media clock between |
205 // pauses, then pausing for >= pattern[i].length against MessageLoop | 213 // pauses, then pausing for >= pattern[i].length against MessageLoop |
206 // A pause with delay <0 signals to stop sequence and do not loop | 214 // A pause with delay <0 signals to stop sequence and do not loop |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 stopped_(false), | 617 stopped_(false), |
610 ran_playing_playback_checks_(false), | 618 ran_playing_playback_checks_(false), |
611 backwards_pts_change_(false), | 619 backwards_pts_change_(false), |
612 pause_pattern_() {} | 620 pause_pattern_() {} |
613 | 621 |
614 AudioVideoPipelineDeviceTest::~AudioVideoPipelineDeviceTest() {} | 622 AudioVideoPipelineDeviceTest::~AudioVideoPipelineDeviceTest() {} |
615 | 623 |
616 void AudioVideoPipelineDeviceTest::Initialize() { | 624 void AudioVideoPipelineDeviceTest::Initialize() { |
617 // Create the media device. | 625 // Create the media device. |
618 task_runner_.reset(new TaskRunnerImpl()); | 626 task_runner_.reset(new TaskRunnerImpl()); |
619 MediaPipelineDeviceParams params(sync_type_, audio_type_, task_runner_.get()); | 627 MediaPipelineDeviceParams params( |
| 628 sync_type_, audio_type_, task_runner_.get(), AudioContentType::kMedia, |
| 629 ::media::AudioDeviceDescription::kDefaultDeviceId); |
620 backend_.reset(CastMediaShlib::CreateMediaPipelineBackend(params)); | 630 backend_.reset(CastMediaShlib::CreateMediaPipelineBackend(params)); |
621 CHECK(backend_); | 631 CHECK(backend_); |
622 } | 632 } |
623 | 633 |
624 void AudioVideoPipelineDeviceTest::AddPause(base::TimeDelta delay, | 634 void AudioVideoPipelineDeviceTest::AddPause(base::TimeDelta delay, |
625 base::TimeDelta length) { | 635 base::TimeDelta length) { |
626 DCHECK_EQ(MediaPipelineDeviceParams::kModeSyncPts, sync_type_); | 636 DCHECK_EQ(MediaPipelineDeviceParams::kModeSyncPts, sync_type_); |
627 pause_pattern_.push_back(PauseInfo(delay, length)); | 637 pause_pattern_.push_back(PauseInfo(delay, length)); |
628 } | 638 } |
629 | 639 |
630 void AudioVideoPipelineDeviceTest::PauseBeforeEos() { | 640 void AudioVideoPipelineDeviceTest::PauseBeforeEos() { |
631 if (audio_feeder_) | 641 if (audio_feeder_) |
632 audio_feeder_->PauseBeforeEos(); | 642 audio_feeder_->PauseBeforeEos(); |
633 if (video_feeder_) | 643 if (video_feeder_) |
634 video_feeder_->PauseBeforeEos(); | 644 video_feeder_->PauseBeforeEos(); |
635 } | 645 } |
636 | 646 |
637 void AudioVideoPipelineDeviceTest::AddEffectsStreams() { | 647 void AudioVideoPipelineDeviceTest::AddEffectsStreams() { |
638 for (int i = 0; i < kNumEffectsStreams; ++i) { | 648 for (int i = 0; i < kNumEffectsStreams; ++i) { |
639 MediaPipelineDeviceParams params( | 649 MediaPipelineDeviceParams params( |
640 MediaPipelineDeviceParams::kModeIgnorePts, | 650 MediaPipelineDeviceParams::kModeIgnorePts, |
641 MediaPipelineDeviceParams::kAudioStreamSoundEffects, | 651 MediaPipelineDeviceParams::kAudioStreamSoundEffects, task_runner_.get(), |
642 task_runner_.get()); | 652 AudioContentType::kMedia, |
| 653 ::media::AudioDeviceDescription::kDefaultDeviceId); |
643 MediaPipelineBackend* effects_backend = | 654 MediaPipelineBackend* effects_backend = |
644 CastMediaShlib::CreateMediaPipelineBackend(params); | 655 CastMediaShlib::CreateMediaPipelineBackend(params); |
645 CHECK(effects_backend); | 656 CHECK(effects_backend); |
646 effects_backends_.push_back(base::WrapUnique(effects_backend)); | 657 effects_backends_.push_back(base::WrapUnique(effects_backend)); |
647 | 658 |
648 MediaPipelineBackend::AudioDecoder* audio_decoder = | 659 MediaPipelineBackend::AudioDecoder* audio_decoder = |
649 effects_backend->CreateAudioDecoder(); | 660 effects_backend->CreateAudioDecoder(); |
650 audio_decoder->SetConfig(DefaultAudioConfig()); | 661 audio_decoder->SetConfig(DefaultAudioConfig()); |
651 | 662 |
652 std::unique_ptr<BufferFeeder> feeder( | 663 std::unique_ptr<BufferFeeder> feeder( |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1159 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
1149 ConfigureForFile("bear-640x360.webm"); | 1160 ConfigureForFile("bear-640x360.webm"); |
1150 PauseBeforeEos(); | 1161 PauseBeforeEos(); |
1151 AddEffectsStreams(); | 1162 AddEffectsStreams(); |
1152 Start(); | 1163 Start(); |
1153 base::RunLoop().Run(); | 1164 base::RunLoop().Run(); |
1154 } | 1165 } |
1155 | 1166 |
1156 } // namespace media | 1167 } // namespace media |
1157 } // namespace chromecast | 1168 } // namespace chromecast |
OLD | NEW |