OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/message_loop.h" | |
6 #include "media/filters/ffmpeg_demuxer.h" | |
7 #include "media/filters/ffmpeg_demuxer_factory.h" | |
8 | |
9 namespace media { | |
10 | |
11 FFmpegDemuxerFactory::FFmpegDemuxerFactory( | |
12 DataSourceFactory* data_source_factory, | |
13 MessageLoop* loop) | |
14 : data_source_factory_(data_source_factory), loop_(loop) {} | |
scherkus (not reviewing)
2011/03/11 21:46:58
indent by two more spaces
Ami GONE FROM CHROMIUM
2011/03/11 22:18:46
Done.
| |
15 | |
16 FFmpegDemuxerFactory::~FFmpegDemuxerFactory() {} | |
17 | |
18 // This and the next class are one-offs whose raison d'etre is the lack of | |
19 // currying functionality in base/callback_old.h's machinery. Once media/ | |
20 // PipelineStatusCallback and {DataSource,Demuxer}Factory::BuildCallback are | |
21 // migrated to the new base/callback.h machinery these should be removed and | |
22 // replaced with currying calls to base::Bind. | |
scherkus (not reviewing)
2011/03/11 21:46:58
nit: we like to annotate function names in comment
Ami GONE FROM CHROMIUM
2011/03/11 22:18:46
Done.
| |
23 class DemuxerCallbackAsPipelineStatusCallback : public PipelineStatusCallback { | |
24 public: | |
25 DemuxerCallbackAsPipelineStatusCallback( | |
26 DemuxerFactory::BuildCallback* cb, | |
27 Demuxer* demuxer) | |
28 : cb_(cb), demuxer_(demuxer) { | |
scherkus (not reviewing)
2011/03/11 21:46:58
indent by two more spaces
Ami GONE FROM CHROMIUM
2011/03/11 22:18:46
Done.
| |
29 DCHECK(cb_.get() && demuxer_); | |
30 } | |
31 | |
32 virtual ~DemuxerCallbackAsPipelineStatusCallback() {} | |
33 | |
34 virtual void RunWithParams(const Tuple1<PipelineError>& params) { | |
35 cb_->Run(params.a, demuxer_); | |
36 } | |
37 | |
38 private: | |
39 scoped_ptr<DemuxerFactory::BuildCallback> cb_; | |
40 scoped_refptr<Demuxer> demuxer_; | |
41 | |
42 DISALLOW_IMPLICIT_CONSTRUCTORS(DemuxerCallbackAsPipelineStatusCallback); | |
43 }; | |
44 | |
45 // See comments on DemuxerCallbackAsPipelineStatusCallback above. | |
46 class DemuxerCallbackAsDataSourceCallback : | |
47 public DataSourceFactory::BuildCallback { | |
scherkus (not reviewing)
2011/03/11 21:46:58
de-indent by 2 spaces
Ami GONE FROM CHROMIUM
2011/03/11 22:18:46
Done.
| |
48 public: | |
49 DemuxerCallbackAsDataSourceCallback(DemuxerFactory::BuildCallback* cb, | |
50 MessageLoop* loop) | |
51 : cb_(cb), loop_(loop) { | |
scherkus (not reviewing)
2011/03/11 21:46:58
indent by two more spaces
Ami GONE FROM CHROMIUM
2011/03/11 22:18:46
Done.
| |
52 DCHECK(cb_.get() && loop_); | |
53 } | |
54 | |
55 virtual ~DemuxerCallbackAsDataSourceCallback() {} | |
56 | |
57 virtual void RunWithParams(const Tuple2<PipelineError, DataSource*>& params) { | |
58 PipelineError status = params.a; | |
59 DataSource* data_source = params.b; | |
60 if (status != PIPELINE_OK) { | |
61 cb_->Run(status, static_cast<Demuxer*>(NULL)); | |
62 return; | |
63 } | |
64 DCHECK(data_source); | |
65 scoped_refptr<FFmpegDemuxer> demuxer = new FFmpegDemuxer(loop_); | |
66 demuxer->Initialize( | |
67 data_source, | |
68 new DemuxerCallbackAsPipelineStatusCallback(cb_.release(), demuxer)); | |
69 } | |
70 | |
71 private: | |
72 scoped_ptr<DemuxerFactory::BuildCallback> cb_; | |
73 MessageLoop* loop_; | |
74 | |
75 DISALLOW_IMPLICIT_CONSTRUCTORS(DemuxerCallbackAsDataSourceCallback); | |
76 }; | |
77 | |
78 void FFmpegDemuxerFactory::Build(const std::string& url, BuildCallback* cb) { | |
79 data_source_factory_->Build( | |
80 url, new DemuxerCallbackAsDataSourceCallback(cb, loop_)); | |
81 } | |
82 | |
83 DemuxerFactory* FFmpegDemuxerFactory::Clone() const { | |
84 return new FFmpegDemuxerFactory(data_source_factory_->Clone(), loop_); | |
85 } | |
86 | |
87 } // namespace media | |
OLD | NEW |