| Index: media/base/video_renderer.h
|
| diff --git a/media/base/video_renderer.h b/media/base/video_renderer.h
|
| index 8907610595de103bc66290b5f81243df7fd9a19e..08746d4451e1e9fedb4eb2dc0627bb59181b82d7 100644
|
| --- a/media/base/video_renderer.h
|
| +++ b/media/base/video_renderer.h
|
| @@ -8,33 +8,95 @@
|
| #include "base/callback.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/time.h"
|
| -#include "media/base/filters.h"
|
| #include "media/base/media_export.h"
|
| #include "media/base/pipeline_status.h"
|
|
|
| +namespace gfx {
|
| +class Size;
|
| +}
|
| +
|
| namespace media {
|
|
|
| class VideoDecoder;
|
|
|
| -class MEDIA_EXPORT VideoRenderer : public Filter {
|
| +class MEDIA_EXPORT VideoRenderer
|
| + : public base::RefCountedThreadSafe<VideoRenderer> {
|
| public:
|
| // Used to update the pipeline's clock time. The parameter is the time that
|
| // the clock should not exceed.
|
| typedef base::Callback<void(base::TimeDelta)> TimeCB;
|
|
|
| - // Initialize a VideoRenderer with the given VideoDecoder, executing the
|
| - // callback upon completion.
|
| + // Executed when the natural size of the video has changed.
|
| + typedef base::Callback<void(const gfx::Size& size)> NaturalSizeChangedCB;
|
| +
|
| + // Used to query the current time or duration of the media.
|
| + typedef base::Callback<base::TimeDelta()> TimeDeltaCB;
|
| +
|
| + // Initialize a VideoRenderer with the given VideoDecoder, executing
|
| + // |init_cb| callback upon completion.
|
| + //
|
| + // |statistics_cb| is executed periodically with video rendering stats, such
|
| + // as dropped frames.
|
| + //
|
| + // |time_cb| is executed whenever time has advanced by way of video rendering.
|
| + //
|
| + // |size_changed_cb| is executed whenever the dimensions of the video has
|
| + // changed.
|
| + //
|
| + // |ended_cb| is executed when video rendering has reached the end of stream.
|
| + //
|
| + // |error_cb| is executed if an error was encountered.
|
| + //
|
| + // |get_time_cb| is used to query the current media playback time.
|
| + //
|
| + // |get_duration_cb| is used to query the media duration.
|
| virtual void Initialize(const scoped_refptr<VideoDecoder>& decoder,
|
| - const PipelineStatusCB& status_cb,
|
| + const PipelineStatusCB& init_cb,
|
| const StatisticsCB& statistics_cb,
|
| - const TimeCB& time_cb) = 0;
|
| + const TimeCB& time_cb,
|
| + const NaturalSizeChangedCB& size_changed_cb,
|
| + const base::Closure& ended_cb,
|
| + const PipelineStatusCB& error_cb,
|
| + const TimeDeltaCB& get_time_cb,
|
| + const TimeDeltaCB& get_duration_cb) = 0;
|
| +
|
| + // Start audio decoding and rendering at the current playback rate, executing
|
| + // |callback| when playback is underway.
|
| + virtual void Play(const base::Closure& callback) = 0;
|
| +
|
| + // Temporarily suspend decoding and rendering video, executing |callback| when
|
| + // playback has been suspended.
|
| + virtual void Pause(const base::Closure& callback) = 0;
|
| +
|
| + // Discard any video data, executing |callback| when completed.
|
| + virtual void Flush(const base::Closure& callback) = 0;
|
|
|
| - // Returns true if this filter has received and processed an end-of-stream
|
| - // buffer.
|
| + // Start prerolling video data for samples starting at |time|, executing
|
| + // |callback| when completed.
|
| + //
|
| + // Only valid to call after a successful Initialize() or Flush().
|
| + //
|
| + // TODO(scherkus): rename this to Preroll().
|
| + virtual void Seek(base::TimeDelta time, const PipelineStatusCB& callback) = 0;
|
| +
|
| + // Stop all operations in preparation for being deleted, executing |callback|
|
| + // when complete.
|
| + virtual void Stop(const base::Closure& callback) = 0;
|
| +
|
| + // Updates the current playback rate.
|
| + virtual void SetPlaybackRate(float playback_rate) = 0;
|
| +
|
| + // Returns true if all video data has been rendered.
|
| virtual bool HasEnded() = 0;
|
|
|
| protected:
|
| - virtual ~VideoRenderer() {}
|
| + friend class base::RefCountedThreadSafe<VideoRenderer>;
|
| +
|
| + VideoRenderer();
|
| + virtual ~VideoRenderer();
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(VideoRenderer);
|
| };
|
|
|
| } // namespace media
|
|
|