Index: media/base/pipeline.cc |
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc |
index 66592faf431a60f322b0d0869ece1a3a6e85a3f9..28a37a9282f7e2a78f55ca71a4f5b6fd226e9b1e 100644 |
--- a/media/base/pipeline.cc |
+++ b/media/base/pipeline.cc |
@@ -88,7 +88,6 @@ Pipeline::~Pipeline() { |
} |
void Pipeline::Start(scoped_ptr<FilterCollection> collection, |
- const std::string& url, |
const PipelineStatusCB& ended_cb, |
const PipelineStatusCB& error_cb, |
const NetworkEventCB& network_cb, |
@@ -99,7 +98,7 @@ void Pipeline::Start(scoped_ptr<FilterCollection> collection, |
running_ = true; |
message_loop_->PostTask(FROM_HERE, base::Bind( |
&Pipeline::StartTask, this, base::Passed(&collection), |
- url, ended_cb, error_cb, network_cb, start_cb)); |
+ ended_cb, error_cb, network_cb, start_cb)); |
} |
void Pipeline::Stop(const PipelineStatusCB& stop_cb) { |
@@ -585,7 +584,6 @@ void Pipeline::OnUpdateStatistics(const PipelineStatistics& stats) { |
} |
void Pipeline::StartTask(scoped_ptr<FilterCollection> filter_collection, |
- const std::string& url, |
const PipelineStatusCB& ended_cb, |
const PipelineStatusCB& error_cb, |
const NetworkEventCB& network_cb, |
@@ -593,7 +591,6 @@ void Pipeline::StartTask(scoped_ptr<FilterCollection> filter_collection, |
DCHECK_EQ(MessageLoop::current(), message_loop_); |
DCHECK_EQ(kCreated, state_); |
filter_collection_ = filter_collection.Pass(); |
- url_ = url; |
ended_cb_ = ended_cb; |
error_cb_ = error_cb; |
network_cb_ = network_cb; |
@@ -1099,26 +1096,28 @@ void Pipeline::InitializeDemuxer() { |
DCHECK_EQ(MessageLoop::current(), message_loop_); |
DCHECK(IsPipelineOk()); |
- filter_collection_->GetDemuxerFactory()->Build( |
- url_, base::Bind(&Pipeline::OnDemuxerBuilt, this)); |
+ demuxer_ = filter_collection_->GetDemuxer(); |
+ if (!demuxer_) { |
+ SetError(PIPELINE_ERROR_REQUIRED_FILTER_MISSING); |
+ return; |
+ } |
+ |
+ demuxer_->set_host(this); |
+ demuxer_->Initialize(base::Bind(&Pipeline::OnDemuxerInitialized, this)); |
} |
-void Pipeline::OnDemuxerBuilt(PipelineStatus status, Demuxer* demuxer) { |
+void Pipeline::OnDemuxerInitialized(PipelineStatus status) { |
if (MessageLoop::current() != message_loop_) { |
message_loop_->PostTask(FROM_HERE, base::Bind( |
- &Pipeline::OnDemuxerBuilt, this, status, make_scoped_refptr(demuxer))); |
+ &Pipeline::OnDemuxerInitialized, this, status)); |
return; |
} |
- demuxer_ = demuxer; |
if (status != PIPELINE_OK) { |
SetError(status); |
return; |
} |
- CHECK(demuxer_) << "Null demuxer encountered despite PIPELINE_OK."; |
- demuxer_->set_host(this); |
- |
{ |
base::AutoLock auto_lock(lock_); |
// We do not want to start the clock running. We only want to set the base |