Commit 9ca5b72d authored by gunsch's avatar gunsch Committed by Commit bot

Chromecast buildfix: update CmaRenderer for Initialize API change.

See: https://codereview.chromium.org/870693002

R=erickung@chromium.org,dalecurtis@chromium.org
BUG=450764

Review URL: https://codereview.chromium.org/869283003

Cr-Commit-Position: refs/heads/master@{#313195}
parent 9b5a14df
......@@ -62,12 +62,15 @@ CmaRenderer::CmaRenderer(scoped_ptr<MediaPipeline> media_pipeline)
CmaRenderer::~CmaRenderer() {
DCHECK(thread_checker_.CalledOnValidThread());
FireAllPendingCallbacks();
if (!init_cb_.is_null())
base::ResetAndReturn(&init_cb_).Run(::media::PIPELINE_ERROR_ABORT);
else if (!flush_cb_.is_null())
base::ResetAndReturn(&flush_cb_).Run();
}
void CmaRenderer::Initialize(
::media::DemuxerStreamProvider* demuxer_stream_provider,
const base::Closure& init_cb,
const ::media::PipelineStatusCB& init_cb,
const ::media::StatisticsCB& statistics_cb,
const ::media::BufferingStateCB& buffering_state_cb,
const PaintCB& paint_cb,
......@@ -259,12 +262,16 @@ void CmaRenderer::InitializeAudioPipeline() {
void CmaRenderer::OnAudioPipelineInitializeDone(
::media::PipelineStatus status) {
DCHECK(thread_checker_.CalledOnValidThread());
// OnError() may be fired at any time, even before initialization is complete.
if (state_ == kError)
return;
DCHECK_EQ(state_, kUninitialized) << state_;
DCHECK(!init_cb_.is_null());
if (status != ::media::PIPELINE_OK) {
has_audio_ = false;
OnError(status);
base::ResetAndReturn(&init_cb_).Run(status);
return;
}
......@@ -321,17 +328,21 @@ void CmaRenderer::InitializeVideoPipeline() {
void CmaRenderer::OnVideoPipelineInitializeDone(
::media::PipelineStatus status) {
DCHECK(thread_checker_.CalledOnValidThread());
// OnError() may be fired at any time, even before initialization is complete.
if (state_ == kError)
return;
DCHECK_EQ(state_, kUninitialized) << state_;
DCHECK(!init_cb_.is_null());
if (status != ::media::PIPELINE_OK) {
has_video_ = false;
OnError(status);
base::ResetAndReturn(&init_cb_).Run(status);
return;
}
CompleteStateTransition(kFlushed);
base::ResetAndReturn(&init_cb_).Run();
base::ResetAndReturn(&init_cb_).Run(::media::PIPELINE_OK);
}
void CmaRenderer::OnEosReached(bool is_audio) {
......@@ -423,18 +434,18 @@ void CmaRenderer::OnError(::media::PipelineStatus error) {
DCHECK_NE(::media::PIPELINE_OK, error) << "PIPELINE_OK isn't an error!";
LOG(ERROR) << "CMA error encountered: " << error;
// Pipeline will destroy |this| as the result of error.
if (state_ != kError)
error_cb_.Run(error);
State old_state = state_;
CompleteStateTransition(kError);
FireAllPendingCallbacks();
}
void CmaRenderer::FireAllPendingCallbacks() {
DCHECK(thread_checker_.CalledOnValidThread());
if (!init_cb_.is_null())
base::ResetAndReturn(&init_cb_).Run();
if (old_state != kError) {
if (!init_cb_.is_null()) {
base::ResetAndReturn(&init_cb_).Run(error);
return;
}
error_cb_.Run(error);
}
// After OnError() returns, the pipeline may destroy |this|.
if (!flush_cb_.is_null())
base::ResetAndReturn(&flush_cb_).Run();
}
......
......@@ -40,7 +40,7 @@ class CmaRenderer : public ::media::Renderer {
// ::media::Renderer implementation:
void Initialize(
::media::DemuxerStreamProvider* demuxer_stream_provider,
const base::Closure& init_cb,
const ::media::PipelineStatusCB& init_cb,
const ::media::StatisticsCB& statistics_cb,
const ::media::BufferingStateCB& buffering_state_cb,
const PaintCB& paint_cb,
......@@ -86,8 +86,6 @@ class CmaRenderer : public ::media::Renderer {
void OnFlushDone(::media::PipelineStatus status);
void OnError(::media::PipelineStatus status);
void FireAllPendingCallbacks();
// Begin a state transition.
// Return true if delayed because of a pending state transition.
void BeginStateTransition();
......@@ -104,7 +102,7 @@ class CmaRenderer : public ::media::Renderer {
// Set of callbacks.
PaintCB paint_cb_;
base::Closure init_cb_;
::media::PipelineStatusCB init_cb_;
::media::StatisticsCB statistics_cb_;
base::Closure ended_cb_;
::media::PipelineStatusCB error_cb_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment