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

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

Issue 1372393007: [Chromecast] Upgrade to new CMA backend API (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Address alokp@ comments Created 5 years, 2 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/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..b88f686b3e7ab529bf486b6036e19446ac3ef42b 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,16 +39,10 @@ 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) {
- CMALOG(kLogControl) << "AudioPipelineImpl::StartPlayingFrom t0="
- << time.InMilliseconds();
+ CMALOG(kLogControl) << __FUNCTION__ << " t0=" << time.InMilliseconds();
// Reset the pipeline statistics.
previous_stats_ = ::media::PipelineStatistics();
@@ -68,7 +62,7 @@ bool AudioPipelineImpl::StartPlayingFrom(
}
void AudioPipelineImpl::Flush(const ::media::PipelineStatusCB& status_cb) {
- CMALOG(kLogControl) << "AudioPipelineImpl::Flush";
+ CMALOG(kLogControl) << __FUNCTION__;
if (av_pipeline_impl_->GetState() == AvPipelineImpl::kError) {
status_cb.Run(::media::PIPELINE_ERROR_ABORT);
return;
@@ -81,7 +75,7 @@ void AudioPipelineImpl::Flush(const ::media::PipelineStatusCB& status_cb) {
void AudioPipelineImpl::OnFlushDone(
const ::media::PipelineStatusCB& status_cb) {
- CMALOG(kLogControl) << "AudioPipelineImpl::OnFlushDone";
+ CMALOG(kLogControl) << __FUNCTION__;
if (av_pipeline_impl_->GetState() == AvPipelineImpl::kError) {
status_cb.Run(::media::PIPELINE_ERROR_ABORT);
return;
@@ -91,7 +85,7 @@ void AudioPipelineImpl::OnFlushDone(
}
void AudioPipelineImpl::Stop() {
- CMALOG(kLogControl) << "AudioPipelineImpl::Stop";
+ CMALOG(kLogControl) << __FUNCTION__;
av_pipeline_impl_->Stop();
av_pipeline_impl_->TransitionToState(AvPipelineImpl::kStopped);
}
@@ -104,15 +98,14 @@ void AudioPipelineImpl::Initialize(
const ::media::AudioDecoderConfig& audio_config,
scoped_ptr<CodedFrameProvider> frame_provider,
const ::media::PipelineStatusCB& status_cb) {
- CMALOG(kLogControl) << "AudioPipelineImpl::Initialize "
+ CMALOG(kLogControl) << __FUNCTION__ << " "
<< audio_config.AsHumanReadableString();
if (frame_provider)
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 +114,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(
@@ -129,10 +139,10 @@ void AudioPipelineImpl::OnUpdateConfig(
const ::media::AudioDecoderConfig& audio_config,
const ::media::VideoDecoderConfig& video_config) {
if (audio_config.IsValidConfig()) {
- CMALOG(kLogControl) << "AudioPipelineImpl::OnUpdateConfig id:" << id << " "
+ CMALOG(kLogControl) << __FUNCTION__ << " 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 +153,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;

Powered by Google App Engine
This is Rietveld 408576698