Index: media/base/pipeline.h |
diff --git a/media/base/pipeline.h b/media/base/pipeline.h |
index db326c2928353f2aa9d6080ad650e4ecd56f22fb..fcd9f89dc409335d16e2ce5ecbbb8b252e5259ba 100644 |
--- a/media/base/pipeline.h |
+++ b/media/base/pipeline.h |
@@ -10,6 +10,7 @@ |
#include "media/base/buffering_state.h" |
#include "media/base/cdm_context.h" |
#include "media/base/media_export.h" |
+#include "media/base/pipeline_metadata.h" |
#include "media/base/pipeline_status.h" |
#include "media/base/ranges.h" |
#include "media/base/text_track.h" |
@@ -19,57 +20,31 @@ |
namespace media { |
class Demuxer; |
+class PipelineClient; |
class Renderer; |
class VideoFrame; |
-// Metadata describing a pipeline once it has been initialized. |
-struct PipelineMetadata { |
- PipelineMetadata() |
- : has_audio(false), has_video(false), video_rotation(VIDEO_ROTATION_0) {} |
- |
- bool has_audio; |
- bool has_video; |
- gfx::Size natural_size; |
- VideoRotation video_rotation; |
- base::Time timeline_offset; |
-}; |
- |
-typedef base::Callback<void(PipelineMetadata)> PipelineMetadataCB; |
- |
class MEDIA_EXPORT Pipeline { |
public: |
- // Used to paint VideoFrame. |
- typedef base::Callback<void(const scoped_refptr<VideoFrame>&)> PaintCB; |
+ virtual ~Pipeline() {} |
// Build a pipeline to using the given |demuxer| and |renderer| to construct |
// a filter chain, executing |seek_cb| when the initial seek has completed. |
// |
- // The following permanent callbacks will be executed as follows up until |
- // Stop() has completed: |
- // |ended_cb| will be executed whenever the media reaches the end. |
- // |error_cb| will be executed whenever an error occurs but hasn't been |
- // reported already through another callback. |
- // |metadata_cb| will be executed when the content duration, container video |
- // size, start time, and whether the content has audio and/or |
- // video in supported formats are known. |
- // |buffering_state_cb| will be executed whenever there are changes in the |
- // overall buffering state of the pipeline. |
- // |duration_change_cb| optional callback that will be executed whenever the |
- // presentation duration changes. |
- // |add_text_track_cb| will be executed whenever a text track is added. |
- // |waiting_for_decryption_key_cb| will be executed whenever the key needed |
- // to decrypt the stream is not available. |
+ // The following permanent callbacks will be executed on PipelineClient up |
+ // until Stop() has completed: |
+ // OnError |
+ // OnEnded |
+ // OnMetadata |
+ // OnBufferingStateChange |
+ // OnDurationChange |
+ // OnAddTextTrack |
+ // OnWaitingForDecryptionKey |
+ // |
// It is an error to call this method after the pipeline has already started. |
virtual void Start(Demuxer* demuxer, |
scoped_ptr<Renderer> renderer, |
- const base::Closure& ended_cb, |
- const PipelineStatusCB& error_cb, |
- const PipelineStatusCB& seek_cb, |
- const PipelineMetadataCB& metadata_cb, |
- const BufferingStateCB& buffering_state_cb, |
- const base::Closure& duration_change_cb, |
- const AddTextTrackCB& add_text_track_cb, |
- const base::Closure& waiting_for_decryption_key_cb) = 0; |
+ const PipelineStatusCB& seek_cb) = 0; |
sandersd (OOO until July 31)
2016/04/21 00:36:30
Are we going to rename this init_cb while we are a
xhwang
2016/04/21 05:50:35
Or |start_cb|?
alokp
2016/04/21 21:56:38
This particular callback is shared between Start,
xhwang
2016/04/21 22:26:04
Right. We should separate the initial seek_cb (for
alokp
2016/04/22 05:08:59
I will need to look into this closely. I think thi
xhwang
2016/04/22 16:05:05
sgtm. A TODO would be nice here.
|
// Asynchronously stops the pipeline, executing |stop_cb| when the pipeline |
// teardown has completed. |
@@ -155,6 +130,14 @@ class MEDIA_EXPORT Pipeline { |
virtual void SetCdm(CdmContext* cdm_context, |
const CdmAttachedCB& cdm_attached_cb) = 0; |
+ |
+ protected: |
+ Pipeline(PipelineClient* client) : client_(client) {} |
xhwang
2016/04/21 05:50:35
What's the value of putting this in "protected"? P
alokp
2016/04/21 21:56:38
Done.
|
+ |
+ PipelineClient* client() const { return client_; } |
+ |
+ private: |
+ PipelineClient* client_; |
xhwang
2016/04/21 05:50:35
This would work. But I am not a huge fan of storin
alokp
2016/04/21 21:56:38
Yeah this will work since client is only being use
xhwang
2016/04/21 22:26:04
The Start() is really a combination of both Initia
xhwang
2016/04/21 22:32:05
To be clear. I am not proposing this change. Just
alokp
2016/04/22 05:08:59
This is a minor thing. I have kept it in Start for
|
}; |
} // namespace media |