Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Unified Diff: chromecast/media/cma/pipeline/video_pipeline_impl.cc

Issue 1148253006: Chromecast: Use std::vector to pass video config in CMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..31ad7a71365fb2c7219431ba8abb35ea0334117b 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,9 +112,19 @@ void VideoPipelineImpl::Initialize(
if (frame_provider)
SetCodedFrameProvider(frame_provider.Pass());
- if (!video_device_->SetConfig(
- DecoderConfigAdapter::ToCastVideoConfig(kPrimary, video_config)) ||
- !av_pipeline_impl_->Initialize()) {
+ VideoConfig *video_configs = new VideoConfig[configs.size()];
gunsch 2015/06/04 17:03:43 scoped_ptr has an array templatization that handle
erickung1 2015/06/04 20:29:20 I removed the code here using loop and assume at m
+ for (size_t i = 0; i < configs.size(); i++) {
+ LOG(INFO) << configs[i].AsHumanReadableString();
+ video_configs[i] = DecoderConfigAdapter::ToCastVideoConfig(
+ static_cast<StreamId>(i), configs[i]);
+ if (i > 0) {
+ video_configs[i-1].additional_config = &video_configs[i];
gunsch 2015/06/04 17:03:43 I don't understand this. So you allow for N video
erickung1 2015/06/04 20:29:20 The original thought is to use programming solutio
+ }
+ }
+ bool result = video_device_->SetConfig(video_configs[0]);
gunsch 2015/06/04 17:03:43 Yeah, see, you do a complicated loop above, but th
erickung1 2015/06/04 20:29:20 Done.
+ delete[] video_configs;
+
+ if (!result || !av_pipeline_impl_->Initialize()) {
status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED);
return;
}
@@ -127,6 +136,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();

Powered by Google App Engine
This is Rietveld 408576698