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

Unified Diff: media/filters/ffmpeg_demuxer_factory.cc

Issue 7484054: Migrate Pipeline & PipelineImpl to PipelineStatusCB. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CR nits Created 9 years, 4 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
« no previous file with comments | « media/filters/ffmpeg_demuxer.cc ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « media/filters/ffmpeg_demuxer.cc ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698