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 "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 Loading... | |
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 |
OLD | NEW |