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

Unified Diff: chromecast/renderer/media/cma_renderer.cc

Issue 1955843002: Move Renderer permanent callbacks into RendererClient interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates media::Renderer subclasses Created 4 years, 7 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/renderer/media/cma_renderer.cc
diff --git a/chromecast/renderer/media/cma_renderer.cc b/chromecast/renderer/media/cma_renderer.cc
index 19e06b099f557f6c9c0cc73c731b1f858fbc1b0a..cb2191dfa8a5e2ea38b05326066c432778cb9764 100644
--- a/chromecast/renderer/media/cma_renderer.cc
+++ b/chromecast/renderer/media/cma_renderer.cc
@@ -26,6 +26,7 @@
#include "media/base/bind_to_current_loop.h"
#include "media/base/demuxer_stream_provider.h"
#include "media/base/pipeline_status.h"
+#include "media/base/renderer_client.h"
#include "media/base/time_delta_interpolator.h"
#include "media/base/video_renderer_sink.h"
#include "media/renderers/gpu_video_accelerator_factories.h"
@@ -86,21 +87,12 @@ CmaRenderer::~CmaRenderer() {
void CmaRenderer::Initialize(
::media::DemuxerStreamProvider* demuxer_stream_provider,
- const ::media::PipelineStatusCB& init_cb,
- const ::media::StatisticsCB& statistics_cb,
- const ::media::BufferingStateCB& buffering_state_cb,
- const base::Closure& ended_cb,
- const ::media::PipelineStatusCB& error_cb,
- const base::Closure& waiting_for_decryption_key_cb) {
+ ::media::RendererClient* client,
+ const ::media::PipelineStatusCB& init_cb) {
CMALOG(kLogControl) << __FUNCTION__;
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK_EQ(state_, kUninitialized) << state_;
DCHECK(!init_cb.is_null());
- DCHECK(!statistics_cb.is_null());
- DCHECK(!ended_cb.is_null());
- DCHECK(!error_cb.is_null());
- DCHECK(!buffering_state_cb.is_null());
- DCHECK(!waiting_for_decryption_key_cb.is_null());
DCHECK(demuxer_stream_provider->GetStream(::media::DemuxerStream::AUDIO) ||
demuxer_stream_provider->GetStream(::media::DemuxerStream::VIDEO));
@@ -110,14 +102,11 @@ void CmaRenderer::Initialize(
BeginStateTransition();
demuxer_stream_provider_ = demuxer_stream_provider;
- statistics_cb_ = statistics_cb;
- buffering_state_cb_ = buffering_state_cb;
- ended_cb_ = ended_cb;
- error_cb_ = error_cb;
- waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
+ client_ = client;
MediaPipelineClient media_pipeline_client;
- media_pipeline_client.error_cb = ::media::BindToCurrentLoop(error_cb_);
+ media_pipeline_client.error_cb =
+ ::media::BindToCurrentLoop(base::Bind(&CmaRenderer::OnError, weak_this_));
media_pipeline_client.buffering_state_cb = ::media::BindToCurrentLoop(
base::Bind(&CmaRenderer::OnBufferingNotification, weak_this_));
media_pipeline_client.time_update_cb = ::media::BindToCurrentLoop(
@@ -161,7 +150,7 @@ void CmaRenderer::StartPlayingFrom(base::TimeDelta time) {
BeginStateTransition();
if (state_ == kError) {
- error_cb_.Run(::media::PIPELINE_ERROR_ABORT);
+ client_->OnError(::media::PIPELINE_ERROR_ABORT);
CompleteStateTransition(kError);
return;
}
@@ -372,7 +361,7 @@ void CmaRenderer::OnVideoPipelineInitializeDone(
}
void CmaRenderer::OnWaitForKey(bool is_audio) {
- waiting_for_decryption_key_cb_.Run();
+ client_->OnWaitingForDecryptionKey();
}
void CmaRenderer::OnEosReached(bool is_audio) {
@@ -395,13 +384,13 @@ void CmaRenderer::OnEosReached(bool is_audio) {
CMALOG(kLogControl) << __FUNCTION__ << " audio_finished=" << audio_finished
<< " video_finished=" << video_finished;
if (audio_finished && video_finished)
- ended_cb_.Run();
+ client_->OnEnded();
}
void CmaRenderer::OnStatisticsUpdated(
const ::media::PipelineStatistics& stats) {
DCHECK(thread_checker_.CalledOnValidThread());
- statistics_cb_.Run(stats);
+ client_->OnStatisticsUpdate(stats);
}
void CmaRenderer::OnNaturalSizeChanged(const gfx::Size& size) {
@@ -433,7 +422,8 @@ void CmaRenderer::OnBufferingNotification(
::media::BufferingState buffering_state) {
CMALOG(kLogControl) << __FUNCTION__ << ": state=" << state_
<< ", buffering=" << buffering_state;
- buffering_state_cb_.Run(buffering_state);
+ DCHECK(thread_checker_.CalledOnValidThread());
+ client_->OnBufferingStateChange(buffering_state);
}
void CmaRenderer::OnFlushDone() {
@@ -463,7 +453,7 @@ void CmaRenderer::OnError(::media::PipelineStatus error) {
base::ResetAndReturn(&init_cb_).Run(error);
return;
}
- error_cb_.Run(error);
+ client_->OnError(error);
}
// After OnError() returns, the pipeline may destroy |this|.

Powered by Google App Engine
This is Rietveld 408576698