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(); |