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

Unified Diff: media/base/pipeline.h

Issue 10753021: Move AudioRenderer out of Filter heirarchy. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: thing Created 8 years, 5 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 5a13633ddc43842a415434f4b2badaaa94384350..2887965c999aa192cd2ea1893849738a85e54657 100644
--- a/media/base/pipeline.h
+++ b/media/base/pipeline.h
@@ -10,6 +10,7 @@
#include "base/gtest_prod_util.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
+#include "media/base/audio_renderer.h"
#include "media/base/demuxer.h"
#include "media/base/filter_host.h"
#include "media/base/media_export.h"
@@ -27,7 +28,6 @@ class TimeDelta;
namespace media {
class AudioDecoder;
-class AudioRenderer;
class Clock;
class Filter;
class FilterCollection;
@@ -225,6 +225,7 @@ class MEDIA_EXPORT Pipeline
private:
FRIEND_TEST_ALL_PREFIXES(PipelineTest, GetBufferedTimeRanges);
+ FRIEND_TEST_ALL_PREFIXES(PipelineTest, DisableAudioRenderer);
friend class MediaLog;
// Only allow ourselves to be deleted by reference counting.
@@ -301,7 +302,6 @@ class MEDIA_EXPORT Pipeline
virtual base::TimeDelta GetDuration() const OVERRIDE;
virtual void SetNaturalVideoSize(const gfx::Size& size) OVERRIDE;
virtual void NotifyEnded() OVERRIDE;
- virtual void DisableAudioRenderer() OVERRIDE;
// Callbacks executed by filters upon completing initialization.
void OnFilterInitialize(PipelineStatus status);
@@ -318,6 +318,9 @@ class MEDIA_EXPORT Pipeline
// Callback executed by filters to update statistics.
void OnUpdateStatistics(const PipelineStatistics& stats);
+ // Callback executed by audio renderer when it has been disabled.
+ void OnAudioDisabled();
+
// Callback executed by audio renderer to update clock time.
void OnAudioTimeUpdate(base::TimeDelta time, base::TimeDelta max_time);
@@ -359,7 +362,7 @@ class MEDIA_EXPORT Pipeline
void NotifyEndedTask();
// Carries out disabling the audio renderer.
- void DisableAudioRendererTask();
+ void AudioDisabledTask();
// Carries out advancing to the next filter during Play()/Pause()/Seek().
void FilterStateTransitionTask();
@@ -410,21 +413,22 @@ class MEDIA_EXPORT Pipeline
// Compute the time corresponding to a byte offset.
base::TimeDelta TimeForByteOffset_Locked(int64 byte_offset) const;
- // Initiates a Stop() on |demuxer_| & |pipeline_filter_|. |callback|
- // is called once both objects have been stopped.
- void DoStop(const base::Closure& callback);
-
- // Called when |demuxer_| has stopped. This method calls Stop()
- // on |pipeline_filter_|.
- void OnDemuxerStopDone(const base::Closure& callback);
-
- // Initiates a Seek() on the |demuxer_| & |pipeline_filter_|.
- void DoSeek(base::TimeDelta seek_timestamp);
+ // Initiates an asynchronous Pause/Seek/Play/Stop() call sequence executing
+ // |done_cb| when completed.
+ void DoPause(const base::Closure& done_cb);
+ void DoFlush(const base::Closure& done_cb);
+ void DoPlay(const base::Closure& done_cb);
+ void DoStop(const base::Closure& done_cb);
- // Called when |demuxer_| finishes seeking. If seeking was successful,
- // then Seek() is called on |pipeline_filter_|.
- void OnDemuxerSeekDone(base::TimeDelta seek_timestamp,
- PipelineStatus status);
+ // Initiates an asynchronous Seek() and preroll call sequence executing
+ // |done_cb| with the final status when completed. If |skip_demuxer_seek| is
+ // true then only renderers will attempt to preroll.
+ //
+ // TODO(scherkus): Prerolling should be separate from seeking so we can report
+ // finer grained ready states (HAVE_CURRENT_DATA vs. HAVE_FUTURE_DATA)
+ // indepentent from seeking.
+ void DoSeek(base::TimeDelta seek_timestamp, bool skip_demuxer_seek,
+ const PipelineStatusCB& done_cb);
void OnAudioUnderflow();
@@ -533,6 +537,10 @@ class MEDIA_EXPORT Pipeline
PipelineStatusCB error_cb_;
// Reference to the filter(s) that constitute the pipeline.
+ //
+ // TODO(scherkus): At this point in time this is a CompositeFilter that
+ // contains |video_renderer_|. Remove when CompositeFilter is gone, see
+ // http://crbug.com/126069
scoped_refptr<Filter> pipeline_filter_;
// Decoder reference used for signalling imminent shutdown.

Powered by Google App Engine
This is Rietveld 408576698