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

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: docs 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..3d0655db0e05cce52933325e9c1af7f5304c33f9 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;
@@ -102,7 +102,8 @@ class MEDIA_EXPORT PipelineStatusNotification {
class MEDIA_EXPORT Pipeline
: public base::RefCountedThreadSafe<Pipeline>,
public FilterHost,
- public DemuxerHost {
+ public DemuxerHost,
+ public AudioRendererHost {
public:
// Constructs a media pipeline that will execute on |message_loop|.
Pipeline(MessageLoop* message_loop, MediaLog* media_log);
@@ -301,7 +302,10 @@ 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;
+
+ // AudioRendererHost implementation.
+ virtual void AudioRendererEnded() OVERRIDE;
+ virtual void AudioRendererDisabled() OVERRIDE;
// Callbacks executed by filters upon completing initialization.
void OnFilterInitialize(PipelineStatus status);
@@ -359,7 +363,7 @@ class MEDIA_EXPORT Pipeline
void NotifyEndedTask();
// Carries out disabling the audio renderer.
- void DisableAudioRendererTask();
+ void AudioRendererDisabledTask();
// Carries out advancing to the next filter during Play()/Pause()/Seek().
void FilterStateTransitionTask();
@@ -410,21 +414,21 @@ 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 an asynchronous Pause/Flush/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);
- // Initiates a Seek() on the |demuxer_| & |pipeline_filter_|.
+ // Initiates an asynchronous Seek() call sequence executing |done_cb| when
acolwell GONE FROM CHROMIUM 2012/07/10 16:34:37 s/done_cb/seek_cb_ since there are no done_cb para
scherkus (not reviewing) 2012/07/17 03:43:00 Done.
+ // completed. Seek() is separated from the other operations as we will
+ // prematurely terminate the call sequence if an error occurs.
void DoSeek(base::TimeDelta seek_timestamp);
-
- // Called when |demuxer_| finishes seeking. If seeking was successful,
- // then Seek() is called on |pipeline_filter_|.
void OnDemuxerSeekDone(base::TimeDelta seek_timestamp,
PipelineStatus status);
+ void OnAudioRendererSeekDone(base::TimeDelta seek_timestamp,
+ PipelineStatus status);
void OnAudioUnderflow();
@@ -433,6 +437,8 @@ class MEDIA_EXPORT Pipeline
// Report pipeline |status| through |cb| avoiding duplicate error reporting.
void ReportStatus(const PipelineStatusCB& cb, PipelineStatus status);
+ void RunOnPipelineThread(const base::Closure& closure);
+
// Message loop used to execute pipeline tasks.
scoped_refptr<base::MessageLoopProxy> message_loop_;

Powered by Google App Engine
This is Rietveld 408576698