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