Chromium Code Reviews| Index: chromecast/media/cma/pipeline/video_pipeline_impl.cc |
| diff --git a/chromecast/media/cma/pipeline/video_pipeline_impl.cc b/chromecast/media/cma/pipeline/video_pipeline_impl.cc |
| index c1328af39f1b7155cdaf7b9341ed5e7711477db0..4dbac5bc416ea17251a8bcb656063c983d097c63 100644 |
| --- a/chromecast/media/cma/pipeline/video_pipeline_impl.cc |
| +++ b/chromecast/media/cma/pipeline/video_pipeline_impl.cc |
| @@ -101,11 +101,10 @@ void VideoPipelineImpl::SetClient(const VideoPipelineClient& client) { |
| } |
| void VideoPipelineImpl::Initialize( |
| - const ::media::VideoDecoderConfig& video_config, |
| + const std::vector<::media::VideoDecoderConfig>& configs, |
| scoped_ptr<CodedFrameProvider> frame_provider, |
| const ::media::PipelineStatusCB& status_cb) { |
| - CMALOG(kLogControl) << "VideoPipelineImpl::Initialize " |
| - << video_config.AsHumanReadableString(); |
| + CMALOG(kLogControl) << __FUNCTION__ << " config (" << configs.size() << ")"; |
| VideoPipelineDevice::VideoClient client; |
| client.natural_size_changed_cb = |
| base::Bind(&VideoPipelineImpl::OnNaturalSizeChanged, weak_this_); |
| @@ -113,8 +112,19 @@ void VideoPipelineImpl::Initialize( |
| if (frame_provider) |
| SetCodedFrameProvider(frame_provider.Pass()); |
| - if (!video_device_->SetConfig( |
| - DecoderConfigAdapter::ToCastVideoConfig(kPrimary, video_config)) || |
| + // TODO(erickung): Consider better interface to pass multiple video configs |
|
gunsch
2015/06/05 00:17:13
Is there _ever_ a case when we will have more than
erickung1
2015/06/05 01:04:18
This TODO is for later. I'll remove it from this C
|
| + // to CMA without chaining all of them. |
| + DCHECK(configs.size() <= 2); |
| + VideoConfig video_config = |
| + DecoderConfigAdapter::ToCastVideoConfig(kPrimary, configs[0]); |
| + VideoConfig secondary_config; |
| + if (configs.size() == 2) { |
| + secondary_config = DecoderConfigAdapter::ToCastVideoConfig(kSecondary, |
|
gunsch
2015/06/05 00:17:13
(Thanks for removing the "for" loop, this is a lot
erickung1
2015/06/05 01:04:18
From the original code, VideoPipelineImpl::Initial
gunsch
2015/06/05 18:08:16
If that's the assumption, then how about DCHECK(co
erickung1
2015/06/05 20:44:20
Done. I add the DCHECK on audio_pipeline_impl as w
|
| + configs[1]); |
| + video_config.additional_config = &secondary_config; |
| + } |
| + |
| + if (!video_device_->SetConfig(video_config) || |
| !av_pipeline_impl_->Initialize()) { |
| status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); |
| return; |
| @@ -127,6 +137,7 @@ void VideoPipelineImpl::OnUpdateConfig( |
| StreamId id, |
| const ::media::AudioDecoderConfig& audio_config, |
| const ::media::VideoDecoderConfig& video_config) { |
| + DCHECK(!audio_config.IsValidConfig()); |
| if (video_config.IsValidConfig()) { |
| CMALOG(kLogControl) << "VideoPipelineImpl::OnUpdateConfig id:" << id << " " |
| << video_config.AsHumanReadableString(); |