summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/pipeline_impl.cc')
-rw-r--r--media/base/pipeline_impl.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index e322299..320b133 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -130,7 +130,10 @@ void PipelineImpl::Stop(const PipelineStatusCB& stop_callback) {
return;
}
- // Stop the pipeline, which will set |running_| to false on behalf.
+ if (video_decoder_)
+ video_decoder_->PrepareForShutdownHack();
+
+ // Stop the pipeline, which will set |running_| to false on our behalf.
message_loop_->PostTask(FROM_HERE,
base::Bind(&PipelineImpl::StopTask, this, stop_callback));
}
@@ -1214,19 +1217,18 @@ bool PipelineImpl::InitializeVideoDecoder(
return false;
}
- scoped_refptr<VideoDecoder> video_decoder;
- filter_collection_->SelectVideoDecoder(&video_decoder);
+ filter_collection_->SelectVideoDecoder(&video_decoder_);
- if (!video_decoder) {
+ if (!video_decoder_) {
SetError(PIPELINE_ERROR_REQUIRED_FILTER_MISSING);
return false;
}
- if (!PrepareFilter(video_decoder))
+ if (!PrepareFilter(video_decoder_))
return false;
- pipeline_init_state_->video_decoder_ = video_decoder;
- video_decoder->Initialize(
+ pipeline_init_state_->video_decoder_ = video_decoder_;
+ video_decoder_->Initialize(
stream,
base::Bind(&PipelineImpl::OnFilterInitialize, this),
base::Bind(&PipelineImpl::OnUpdateStatistics, this));