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

Unified Diff: media/base/pipeline.h

Issue 206103004: Remove HasAudio(), HasVideo(), GetInitialNaturalSize() from media::Pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Split BufferingStateCB. Created 6 years, 9 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
Index: media/base/pipeline.h
diff --git a/media/base/pipeline.h b/media/base/pipeline.h
index 9b0ebdf3f45da672935e6d18b5ee7a481bb59cda..d66ef4e98063ff996484a30ede0324e7cb8cf552 100644
--- a/media/base/pipeline.h
+++ b/media/base/pipeline.h
@@ -34,6 +34,18 @@ class TextRenderer;
class TextTrackConfig;
class VideoRenderer;
+// Metadata describing a pipeline once it has been initialized. Sent by the
+// buffering_state callback.
scherkus (not reviewing) 2014/03/21 22:26:10 second sentence is incorrect -- heck I'd just remo
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+struct PipelineMetadata {
+ PipelineMetadata() : has_audio_(), has_video_(), natural_size_() {}
scherkus (not reviewing) 2014/03/21 22:26:10 nit: instead of using the zero-initializer for POD
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+
+ bool has_audio_;
scherkus (not reviewing) 2014/03/21 22:26:10 structs don't use trailing _ for variables: http:/
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+ bool has_video_;
+ gfx::Size natural_size_;
+};
+
+typedef base::Callback<void(PipelineMetadata)> HaveMetadataCB;
scherkus (not reviewing) 2014/03/21 22:26:10 I'd model the naming after PipelineStatusCB: - c
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+
// Pipeline runs the media pipeline. Filters are created and called on the
// task runner injected into this object. Pipeline works like a state
// machine to perform asynchronous initialization, pausing, seeking and playing.
@@ -67,21 +79,6 @@ class VideoRenderer;
// "Stopped" state.
class MEDIA_EXPORT Pipeline : public DemuxerHost {
public:
- // Buffering states the pipeline transitions between during playback.
- // kHaveMetadata:
- // Indicates that the following things are known:
- // content duration, container video size, start time, and whether the
- // content has audio and/or video in supported formats.
- // kPrerollCompleted:
- // All renderers have buffered enough data to satisfy preroll and are ready
- // to start playback.
- enum BufferingState {
- kHaveMetadata,
- kPrerollCompleted,
- };
-
- typedef base::Callback<void(BufferingState)> BufferingStateCB;
-
// Constructs a media pipeline that will execute on |task_runner|.
Pipeline(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
MediaLog* media_log);
@@ -97,18 +94,25 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// 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.
- // |buffering_state_cb| Optional callback that will be executed whenever the
- // pipeline's buffering state changes.
- // |duration_change_cb| Optional callback that will be executed whenever the
+ // |error_cb| optional callback that will be executed whenever an error
scherkus (not reviewing) 2014/03/21 22:26:10 careful tweaking comments: error_cb is definitely
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+ // occurs but hasn't been reported already through another
+ // callback.
+ // |have_metadata_cb| optional callback that will be executed when the
scherkus (not reviewing) 2014/03/21 22:26:10 I usually advocate for as little optional-ness as
sandersd (OOO until July 31) 2014/03/21 23:30:35 Done.
+ // content duration, container video size, start time,
+ // and whether the content has audio and/or video in
+ // supported formats are known.
+ // |preroll_completed_cb| optional callback that will be executed when all
+ // renderers have buffered enough data to satisfy
+ // preroll and are ready to start playback.
+ // |duration_change_cb| optional callback that will be executed whenever the
// presentation duration changes.
// It is an error to call this method after the pipeline has already started.
void Start(scoped_ptr<FilterCollection> filter_collection,
const base::Closure& ended_cb,
const PipelineStatusCB& error_cb,
const PipelineStatusCB& seek_cb,
- const BufferingStateCB& buffering_state_cb,
+ const HaveMetadataCB& have_metadata_cb,
+ const base::Closure& preroll_completed_cb,
const base::Closure& duration_change_cb);
// Asynchronously stops the pipeline, executing |stop_cb| when the pipeline
@@ -134,12 +138,6 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// the pipeline.
bool IsRunning() const;
- // Returns true if the media has audio.
- bool HasAudio() const;
-
- // Returns true if the media has video.
- bool HasVideo() const;
-
// Gets the current playback rate of the pipeline. When the pipeline is
// started, the playback rate will be 0.0f. A rate of 1.0f indicates
// that the pipeline is rendering the media at the standard rate. Valid
@@ -178,10 +176,6 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// determined or can not be determined, this value is 0.
int64 GetTotalBytes() const;
- // Get the video's initial natural size as reported by the container. Note
- // that the natural size can change during playback.
- gfx::Size GetInitialNaturalSize() const;
-
// Return true if loading progress has been made since the last time this
// method was called.
bool DidLoadingProgress() const;
@@ -262,12 +256,7 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// The following "task" methods correspond to the public methods, but these
// methods are run as the result of posting a task to the Pipeline's
// task runner.
- void StartTask(scoped_ptr<FilterCollection> filter_collection,
- const base::Closure& ended_cb,
- const PipelineStatusCB& error_cb,
- const PipelineStatusCB& seek_cb,
- const BufferingStateCB& buffering_state_cb,
- const base::Closure& duration_change_cb);
+ void StartTask();
// Stops and destroys all filters, placing the pipeline in the kStopped state.
void StopTask(const base::Closure& stop_cb);
@@ -370,9 +359,6 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// Total size of the media. Set by filters.
int64 total_bytes_;
- // The initial natural size of the video as reported by the container.
- gfx::Size initial_natural_size_;
-
// Current volume level (from 0.0f to 1.0f). This value is set immediately
// via SetVolume() and a task is dispatched on the task runner to notify the
// filters.
@@ -402,19 +388,15 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// reset the pipeline state, and restore this to PIPELINE_OK.
PipelineStatus status_;
- // Whether the media contains rendered audio or video streams.
- // TODO(fischman,scherkus): replace these with checks for
- // {audio,video}_decoder_ once extraction of {Audio,Video}Decoder from the
- // Filter heirarchy is done.
- bool has_audio_;
- bool has_video_;
-
// The following data members are only accessed by tasks posted to
// |task_runner_|.
// Member that tracks the current state.
State state_;
+ // The initial natural size of the video as reported by the container.
+ gfx::Size initial_natural_size_;
+
// Whether we've received the audio/video/text ended events.
bool audio_ended_;
bool video_ended_;
@@ -432,7 +414,8 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost {
// Permanent callbacks passed in via Start().
base::Closure ended_cb_;
PipelineStatusCB error_cb_;
- BufferingStateCB buffering_state_cb_;
+ HaveMetadataCB have_metadata_cb_;
+ base::Closure preroll_completed_cb_;
base::Closure duration_change_cb_;
// Contains the demuxer and renderers to use when initializing.

Powered by Google App Engine
This is Rietveld 408576698