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

Unified Diff: media/base/pipeline_impl.cc

Issue 6648004: DemuxerFactory is born! (Closed)
Patch Set: Created 9 years, 9 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: media/base/pipeline_impl.cc
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index 6b0089619b83a99eeff96e9e831b6f3b2fb1b5f8..5cc31900fed101090035ac309e038ea2deb13775 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -557,23 +557,23 @@ void PipelineImpl::StartTask(FilterCollection* filter_collection,
seek_callback_.reset(start_callback);
// Kick off initialization.
- set_state(kInitDataSource);
+ set_state(kInitDemuxer);
pipeline_init_state_.reset(new PipelineInitState());
pipeline_init_state_->composite_ = new CompositeFilter(message_loop_);
pipeline_init_state_->composite_->set_host(this);
- InitializeDataSource();
+ InitializeDemuxer();
}
// Main initialization method called on the pipeline thread. This code attempts
// to use the specified filter factory to build a pipeline.
// Initialization step performed in this method depends on current state of this
// object, indicated by |state_|. After each step of initialization, this
-// object transits to the next stage. It starts by creating a DataSource,
-// connects it to a Demuxer, and then connects the Demuxer's audio stream to an
-// AudioDecoder which is then connected to an AudioRenderer. If the media has
-// video, then it connects a VideoDecoder to the Demuxer's video stream, and
-// then connects the VideoDecoder to a VideoRenderer.
+// object transits to the next stage. It starts by creating a Demuxer, and then
+// connects the Demuxer's audio stream to an AudioDecoder which is then
+// connected to an AudioRenderer. If the media has video, then it connects a
+// VideoDecoder to the Demuxer's video stream, and then connects the
+// VideoDecoder to a VideoRenderer.
//
// When all required filters have been created and have called their
// FilterHost's InitializationComplete() method, the pipeline will update its
@@ -582,7 +582,7 @@ void PipelineImpl::StartTask(FilterCollection* filter_collection,
// TODO(hclam): InitializeTask() is now starting the pipeline asynchronously. It
// works like a big state change table. If we no longer need to start filters
// in order, we need to get rid of all the state change.
-void PipelineImpl::InitializeTask() {
+ void PipelineImpl::InitializeTask() {
acolwell GONE FROM CHROMIUM 2011/03/08 21:48:09 Indentation
Ami GONE FROM CHROMIUM 2011/03/08 22:44:48 Done.
DCHECK_EQ(MessageLoop::current(), message_loop_);
// If we have received the stop or error signal, return immediately.
@@ -949,7 +949,6 @@ void PipelineImpl::TeardownStateTransitionTask() {
case kCreated:
case kError:
- case kInitDataSource:
case kInitDemuxer:
case kInitAudioDecoder:
case kInitAudioRenderer:
@@ -1005,22 +1004,22 @@ bool PipelineImpl::PrepareFilter(scoped_refptr<Filter> filter) {
return ret;
}
-void PipelineImpl::InitializeDataSource() {
+void PipelineImpl::InitializeDemuxer() {
DCHECK_EQ(MessageLoop::current(), message_loop_);
DCHECK(IsPipelineOk());
- filter_collection_->GetDataSourceFactory()->Build(url_,
- NewCallback(this, &PipelineImpl::OnDataSourceBuilt));
+ filter_collection_->GetDemuxerFactory()->Build(url_,
+ NewCallback(this, &PipelineImpl::OnDemuxerBuilt));
}
-void PipelineImpl::OnDataSourceBuilt(PipelineError error,
- DataSource* data_source) {
+void PipelineImpl::OnDemuxerBuilt(PipelineError error,
+ Demuxer* demuxer) {
if (MessageLoop::current() != message_loop_) {
message_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this,
- &PipelineImpl::OnDataSourceBuilt,
+ &PipelineImpl::OnDemuxerBuilt,
error,
- make_scoped_refptr(data_source)));
+ make_scoped_refptr(demuxer)));
return;
}
@@ -1029,22 +1028,6 @@ void PipelineImpl::OnDataSourceBuilt(PipelineError error,
return;
}
- PrepareFilter(data_source);
-
- set_state(kInitDemuxer);
- InitializeDemuxer(data_source);
-}
-
-void PipelineImpl::InitializeDemuxer(
- const scoped_refptr<DataSource>& data_source) {
- DCHECK_EQ(MessageLoop::current(), message_loop_);
- DCHECK(IsPipelineOk());
-
- scoped_refptr<Demuxer> demuxer;
-
- CHECK(data_source);
-
- filter_collection_->SelectDemuxer(&demuxer);
if (!demuxer) {
SetError(PIPELINE_ERROR_REQUIRED_FILTER_MISSING);
return;
@@ -1053,9 +1036,8 @@ void PipelineImpl::InitializeDemuxer(
if (!PrepareFilter(demuxer))
return;
- pipeline_init_state_->demuxer_ = demuxer;
- demuxer->Initialize(data_source,
- NewCallback(this, &PipelineImpl::OnFilterInitialize));
+ pipeline_init_state_->demuxer_ = make_scoped_refptr(demuxer);
acolwell GONE FROM CHROMIUM 2011/03/08 21:48:09 I don't think you need make_scoped_refptr() here.
Ami GONE FROM CHROMIUM 2011/03/08 22:44:48 Done.
+ OnFilterInitialize();
acolwell GONE FROM CHROMIUM 2011/03/08 21:48:09 I think you can call InitializeTask() from here in
Ami GONE FROM CHROMIUM 2011/03/08 22:44:48 But calling OFI() has the additional benefit of de
acolwell GONE FROM CHROMIUM 2011/03/08 23:19:00 Ok. Sounds reasonable to me.
}
bool PipelineImpl::InitializeAudioDecoder(
@@ -1202,7 +1184,6 @@ void PipelineImpl::TearDownPipeline() {
NewRunnableMethod(this, &PipelineImpl::FinishDestroyingFiltersTask));
break;
- case kInitDataSource:
case kInitDemuxer:
case kInitAudioDecoder:
case kInitAudioRenderer:

Powered by Google App Engine
This is Rietveld 408576698