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

Side by Side Diff: chromecast/media/cma/pipeline/audio_pipeline_impl.cc

Issue 1074383002: Introduce VideoConfig/AudioConfig class for CMA backend (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: single DecoderConfig structure for both Audio and Video Created 5 years, 8 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 unified diff | Download patch
OLDNEW
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 "chromecast/media/cma/pipeline/audio_pipeline_impl.h" 5 #include "chromecast/media/cma/pipeline/audio_pipeline_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chromecast/media/cma/backend/audio_pipeline_device.h" 8 #include "chromecast/media/cma/backend/audio_pipeline_device.h"
9 #include "chromecast/media/cma/base/buffering_defs.h" 9 #include "chromecast/media/cma/base/buffering_defs.h"
10 #include "chromecast/media/cma/base/cma_logging.h" 10 #include "chromecast/media/cma/base/cma_logging.h"
11 #include "chromecast/media/cma/base/coded_frame_provider.h" 11 #include "chromecast/media/cma/base/coded_frame_provider.h"
12 #include "chromecast/media/cma/base/decoder_config_adapter.h"
12 #include "chromecast/media/cma/pipeline/av_pipeline_impl.h" 13 #include "chromecast/media/cma/pipeline/av_pipeline_impl.h"
14 #include "chromecast/public/media/decoder_config.h"
13 #include "media/base/audio_decoder_config.h" 15 #include "media/base/audio_decoder_config.h"
14 16
15 namespace chromecast { 17 namespace chromecast {
16 namespace media { 18 namespace media {
17 19
18 namespace { 20 namespace {
19 const size_t kMaxAudioFrameSize = 32 * 1024; 21 const size_t kMaxAudioFrameSize = 32 * 1024;
20 } 22 }
21 23
22 AudioPipelineImpl::AudioPipelineImpl(AudioPipelineDevice* audio_device) 24 AudioPipelineImpl::AudioPipelineImpl(AudioPipelineDevice* audio_device)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 102
101 void AudioPipelineImpl::Initialize( 103 void AudioPipelineImpl::Initialize(
102 const ::media::AudioDecoderConfig& audio_config, 104 const ::media::AudioDecoderConfig& audio_config,
103 scoped_ptr<CodedFrameProvider> frame_provider, 105 scoped_ptr<CodedFrameProvider> frame_provider,
104 const ::media::PipelineStatusCB& status_cb) { 106 const ::media::PipelineStatusCB& status_cb) {
105 CMALOG(kLogControl) << "AudioPipelineImpl::Initialize " 107 CMALOG(kLogControl) << "AudioPipelineImpl::Initialize "
106 << audio_config.AsHumanReadableString(); 108 << audio_config.AsHumanReadableString();
107 if (frame_provider) 109 if (frame_provider)
108 SetCodedFrameProvider(frame_provider.Pass()); 110 SetCodedFrameProvider(frame_provider.Pass());
109 111
110 if (!audio_device_->SetConfig(audio_config) || 112 if (!audio_device_->SetConfig(
113 DecoderConfigAdapter::ToDecoderConfig(audio_config)) ||
111 !av_pipeline_impl_->Initialize()) { 114 !av_pipeline_impl_->Initialize()) {
112 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); 115 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED);
113 return; 116 return;
114 } 117 }
115 av_pipeline_impl_->TransitionToState(AvPipelineImpl::kFlushed); 118 av_pipeline_impl_->TransitionToState(AvPipelineImpl::kFlushed);
116 status_cb.Run(::media::PIPELINE_OK); 119 status_cb.Run(::media::PIPELINE_OK);
117 } 120 }
118 121
119 void AudioPipelineImpl::SetVolume(float volume) { 122 void AudioPipelineImpl::SetVolume(float volume) {
120 audio_device_->SetStreamVolumeMultiplier(volume); 123 audio_device_->SetStreamVolumeMultiplier(volume);
121 } 124 }
122 125
123 void AudioPipelineImpl::OnUpdateConfig( 126 void AudioPipelineImpl::OnUpdateConfig(
124 const ::media::AudioDecoderConfig& audio_config, 127 const ::media::AudioDecoderConfig& audio_config,
125 const ::media::VideoDecoderConfig& video_config) { 128 const ::media::VideoDecoderConfig& video_config) {
126 if (audio_config.IsValidConfig()) { 129 if (audio_config.IsValidConfig()) {
127 CMALOG(kLogControl) << "AudioPipelineImpl::OnUpdateConfig " 130 CMALOG(kLogControl) << "AudioPipelineImpl::OnUpdateConfig "
128 << audio_config.AsHumanReadableString(); 131 << audio_config.AsHumanReadableString();
129 132
130 bool success = audio_device_->SetConfig(audio_config); 133 bool success =
gunsch 2015/04/17 01:38:51 two lines is okay, no need to wrap to three
erickung1 2015/04/29 08:52:20 Done.
134 audio_device_->SetConfig(
135 DecoderConfigAdapter::ToDecoderConfig(audio_config));
131 if (!success && !audio_client_.playback_error_cb.is_null()) 136 if (!success && !audio_client_.playback_error_cb.is_null())
132 audio_client_.playback_error_cb.Run(::media::PIPELINE_ERROR_DECODE); 137 audio_client_.playback_error_cb.Run(::media::PIPELINE_ERROR_DECODE);
133 } 138 }
134 } 139 }
135 140
136 void AudioPipelineImpl::UpdateStatistics() { 141 void AudioPipelineImpl::UpdateStatistics() {
137 if (audio_client_.statistics_cb.is_null()) 142 if (audio_client_.statistics_cb.is_null())
138 return; 143 return;
139 144
140 MediaComponentDevice::Statistics device_stats; 145 MediaComponentDevice::Statistics device_stats;
141 if (!audio_device_->GetStatistics(&device_stats)) 146 if (!audio_device_->GetStatistics(&device_stats))
142 return; 147 return;
143 148
144 ::media::PipelineStatistics current_stats; 149 ::media::PipelineStatistics current_stats;
145 current_stats.audio_bytes_decoded = device_stats.decoded_bytes; 150 current_stats.audio_bytes_decoded = device_stats.decoded_bytes;
146 151
147 ::media::PipelineStatistics delta_stats; 152 ::media::PipelineStatistics delta_stats;
148 delta_stats.audio_bytes_decoded = 153 delta_stats.audio_bytes_decoded =
149 current_stats.audio_bytes_decoded - previous_stats_.audio_bytes_decoded; 154 current_stats.audio_bytes_decoded - previous_stats_.audio_bytes_decoded;
150 155
151 previous_stats_ = current_stats; 156 previous_stats_ = current_stats;
152 157
153 audio_client_.statistics_cb.Run(delta_stats); 158 audio_client_.statistics_cb.Run(delta_stats);
154 } 159 }
155 160
156 } // namespace media 161 } // namespace media
157 } // namespace chromecast 162 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698