| Index: chromecast/media/cma/pipeline/audio_pipeline_impl.cc
|
| diff --git a/chromecast/media/cma/pipeline/audio_pipeline_impl.cc b/chromecast/media/cma/pipeline/audio_pipeline_impl.cc
|
| index c7bdfda279d81dd96e49ea8ba98b19b45e2415f1..d264e17575df3e2fb14d4eb131308b5a33afb1c9 100644
|
| --- a/chromecast/media/cma/pipeline/audio_pipeline_impl.cc
|
| +++ b/chromecast/media/cma/pipeline/audio_pipeline_impl.cc
|
| @@ -10,7 +10,6 @@
|
| #include "chromecast/media/cma/base/coded_frame_provider.h"
|
| #include "chromecast/media/cma/base/decoder_config_adapter.h"
|
| #include "chromecast/media/cma/pipeline/av_pipeline_impl.h"
|
| -#include "chromecast/public/media/audio_pipeline_device.h"
|
| #include "chromecast/public/media/decoder_config.h"
|
| #include "media/base/audio_decoder_config.h"
|
|
|
| @@ -21,11 +20,12 @@ namespace {
|
| const size_t kMaxAudioFrameSize = 32 * 1024;
|
| }
|
|
|
| -AudioPipelineImpl::AudioPipelineImpl(AudioPipelineDevice* audio_device)
|
| - : audio_device_(audio_device),
|
| - weak_factory_(this) {
|
| +AudioPipelineImpl::AudioPipelineImpl(
|
| + MediaPipelineBackend::AudioDecoder* decoder,
|
| + const AvPipelineClient& client)
|
| + : decoder_(decoder), audio_client_(client), weak_factory_(this) {
|
| av_pipeline_impl_.reset(new AvPipelineImpl(
|
| - audio_device_,
|
| + decoder_,
|
| base::Bind(&AudioPipelineImpl::OnUpdateConfig, base::Unretained(this))));
|
| weak_this_ = weak_factory_.GetWeakPtr();
|
| }
|
| @@ -39,11 +39,6 @@ void AudioPipelineImpl::SetCodedFrameProvider(
|
| frame_provider.Pass(), kAppAudioBufferSize, kMaxAudioFrameSize);
|
| }
|
|
|
| -void AudioPipelineImpl::SetClient(const AvPipelineClient& client) {
|
| - audio_client_ = client;
|
| - av_pipeline_impl_->SetClient(client);
|
| -}
|
| -
|
| bool AudioPipelineImpl::StartPlayingFrom(
|
| base::TimeDelta time,
|
| const scoped_refptr<BufferingState>& buffering_state) {
|
| @@ -110,9 +105,8 @@ void AudioPipelineImpl::Initialize(
|
| SetCodedFrameProvider(frame_provider.Pass());
|
|
|
| DCHECK(audio_config.IsValidConfig());
|
| - if (!audio_device_->SetConfig(
|
| - DecoderConfigAdapter::ToCastAudioConfig(kPrimary, audio_config)) ||
|
| - !av_pipeline_impl_->Initialize()) {
|
| + if (!decoder_->SetConfig(
|
| + DecoderConfigAdapter::ToCastAudioConfig(kPrimary, audio_config))) {
|
| status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED);
|
| return;
|
| }
|
| @@ -121,7 +115,24 @@ void AudioPipelineImpl::Initialize(
|
| }
|
|
|
| void AudioPipelineImpl::SetVolume(float volume) {
|
| - audio_device_->SetStreamVolumeMultiplier(volume);
|
| + decoder_->SetVolume(volume);
|
| +}
|
| +
|
| +void AudioPipelineImpl::OnBufferPushed(
|
| + MediaPipelineBackend::BufferStatus status) {
|
| + av_pipeline_impl_->OnBufferPushed(status);
|
| +}
|
| +
|
| +void AudioPipelineImpl::OnEndOfStream() {
|
| + if (!audio_client_.eos_cb.is_null())
|
| + audio_client_.eos_cb.Run();
|
| +}
|
| +
|
| +void AudioPipelineImpl::OnError() {
|
| + if (!audio_client_.playback_error_cb.is_null()) {
|
| + audio_client_.playback_error_cb.Run(
|
| + ::media::PIPELINE_ERROR_COULD_NOT_RENDER);
|
| + }
|
| }
|
|
|
| void AudioPipelineImpl::OnUpdateConfig(
|
| @@ -132,7 +143,7 @@ void AudioPipelineImpl::OnUpdateConfig(
|
| CMALOG(kLogControl) << "AudioPipelineImpl::OnUpdateConfig id:" << id << " "
|
| << audio_config.AsHumanReadableString();
|
|
|
| - bool success = audio_device_->SetConfig(
|
| + bool success = decoder_->SetConfig(
|
| DecoderConfigAdapter::ToCastAudioConfig(id, audio_config));
|
| if (!success && !audio_client_.playback_error_cb.is_null())
|
| audio_client_.playback_error_cb.Run(::media::PIPELINE_ERROR_DECODE);
|
| @@ -143,9 +154,8 @@ void AudioPipelineImpl::UpdateStatistics() {
|
| if (audio_client_.statistics_cb.is_null())
|
| return;
|
|
|
| - MediaComponentDevice::Statistics device_stats;
|
| - if (!audio_device_->GetStatistics(&device_stats))
|
| - return;
|
| + MediaPipelineBackend::Decoder::Statistics device_stats;
|
| + decoder_->GetStatistics(&device_stats);
|
|
|
| ::media::PipelineStatistics current_stats;
|
| current_stats.audio_bytes_decoded = device_stats.decoded_bytes;
|
|
|