Chromium Code Reviews| 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 |