Index: media/filters/ffmpeg_demuxer_factory.cc |
diff --git a/media/filters/ffmpeg_demuxer_factory.cc b/media/filters/ffmpeg_demuxer_factory.cc |
index 24e58dc353b277dbe9632c7577b339a034ef8e3e..65dbeb55adc497ab72fd504f27160ec1d1c42109 100644 |
--- a/media/filters/ffmpeg_demuxer_factory.cc |
+++ b/media/filters/ffmpeg_demuxer_factory.cc |
@@ -2,12 +2,26 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/bind.h" |
#include "base/message_loop.h" |
#include "media/filters/ffmpeg_demuxer.h" |
#include "media/filters/ffmpeg_demuxer_factory.h" |
namespace media { |
+static void DemuxerInitDone(DemuxerFactory::BuildCallback* cb, |
+ const scoped_refptr<FFmpegDemuxer>& demuxer, |
+ PipelineStatus status) { |
+ scoped_ptr<DemuxerFactory::BuildCallback> callback(cb); |
+ if (status != PIPELINE_OK) { |
+ callback->Run(status, static_cast<Demuxer*>(NULL)); |
+ return; |
+ } |
+ |
+ callback->Run(PIPELINE_OK, demuxer.get()); |
+} |
+ |
+ |
FFmpegDemuxerFactory::FFmpegDemuxerFactory( |
DataSourceFactory* data_source_factory, |
MessageLoop* loop) |
@@ -15,34 +29,11 @@ FFmpegDemuxerFactory::FFmpegDemuxerFactory( |
FFmpegDemuxerFactory::~FFmpegDemuxerFactory() {} |
-// This and the next class are one-offs whose raison d'etre is the lack of |
-// currying functionality in base/callback_old.h's machinery. Once media/ |
-// PipelineStatusCallback and {DataSource,Demuxer}Factory::BuildCallback are |
-// migrated to the new base/callback.h machinery these should be removed and |
-// replaced with currying calls to base::Bind(). |
-class DemuxerCallbackAsPipelineStatusCallback : public PipelineStatusCallback { |
- public: |
- DemuxerCallbackAsPipelineStatusCallback( |
- DemuxerFactory::BuildCallback* cb, |
- Demuxer* demuxer) |
- : cb_(cb), demuxer_(demuxer) { |
- DCHECK(cb_.get() && demuxer_); |
- } |
- |
- virtual ~DemuxerCallbackAsPipelineStatusCallback() {} |
- |
- virtual void RunWithParams(const Tuple1<PipelineStatus>& params) { |
- cb_->Run(params.a, demuxer_); |
- } |
- |
- private: |
- scoped_ptr<DemuxerFactory::BuildCallback> cb_; |
- scoped_refptr<Demuxer> demuxer_; |
- |
- DISALLOW_IMPLICIT_CONSTRUCTORS(DemuxerCallbackAsPipelineStatusCallback); |
-}; |
- |
-// See comments on DemuxerCallbackAsPipelineStatusCallback above. |
+// This class is a one-off whose raison d'etre is the lack of |
+// currying functionality in base/callback_old.h's machinery. Once |
+// {DataSource,Demuxer}Factory::BuildCallback are migrated to the new |
+// base/callback.h machinery these should be removed and replaced |
+// with currying calls to base::Bind(). |
class DemuxerCallbackAsDataSourceCallback |
: public DataSourceFactory::BuildCallback { |
public: |
@@ -66,7 +57,7 @@ class DemuxerCallbackAsDataSourceCallback |
scoped_refptr<FFmpegDemuxer> demuxer = new FFmpegDemuxer(loop_); |
demuxer->Initialize( |
data_source, |
- new DemuxerCallbackAsPipelineStatusCallback(cb_.release(), demuxer)); |
+ base::Bind(&DemuxerInitDone, cb_.release(), demuxer)); |
} |
private: |