| Index: media/filters/video_renderer_base.h
|
| diff --git a/media/filters/video_renderer_base.h b/media/filters/video_renderer_base.h
|
| index 1f3bd6c6e982b0c4fd295377330fd0515fbc269a..592f5d1e7788d29980d786b1f32b2bd6d31837ca 100644
|
| --- a/media/filters/video_renderer_base.h
|
| +++ b/media/filters/video_renderer_base.h
|
| @@ -11,6 +11,7 @@
|
| #include "base/synchronization/condition_variable.h"
|
| #include "base/synchronization/lock.h"
|
| #include "base/threading/platform_thread.h"
|
| +#include "media/base/demuxer_stream.h"
|
| #include "media/base/pipeline_status.h"
|
| #include "media/base/video_decoder.h"
|
| #include "media/base/video_frame.h"
|
| @@ -50,7 +51,8 @@ class MEDIA_EXPORT VideoRendererBase
|
| bool drop_frames);
|
|
|
| // VideoRenderer implementation.
|
| - virtual void Initialize(const scoped_refptr<VideoDecoder>& decoder,
|
| + virtual void Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| + const VideoDecoderList& decoders,
|
| const PipelineStatusCB& init_cb,
|
| const StatisticsCB& statistics_cb,
|
| const TimeCB& max_time_cb,
|
| @@ -66,6 +68,7 @@ class MEDIA_EXPORT VideoRendererBase
|
| const PipelineStatusCB& cb) OVERRIDE;
|
| virtual void Stop(const base::Closure& callback) OVERRIDE;
|
| virtual void SetPlaybackRate(float playback_rate) OVERRIDE;
|
| + virtual void PrepareForShutdownHack() OVERRIDE;
|
|
|
| // PlatformThread::Delegate implementation.
|
| virtual void ThreadMain() OVERRIDE;
|
| @@ -119,6 +122,18 @@ class MEDIA_EXPORT VideoRendererBase
|
| // |size_changed_cb_| if the natural size changes.
|
| void SetCurrentFrameToNextReadyFrame();
|
|
|
| + // Pops the front of |decoders|, assigns it to |decoder_| and then
|
| + // calls initialize on the new decoder.
|
| + void InitializeNextDecoder(const scoped_refptr<DemuxerStream>& demuxer_stream,
|
| + scoped_ptr<VideoDecoderList> decoders);
|
| +
|
| + // Called when |decoder_| initialization completes.
|
| + // |demuxer_stream| & |decoders| are used if initialization failed and
|
| + // InitializeNextDecoder() needs to be called again.
|
| + void OnDecoderInitDone(const scoped_refptr<DemuxerStream>& demuxer_stream,
|
| + scoped_ptr<VideoDecoderList> decoders,
|
| + PipelineStatus status);
|
| +
|
| // Used for accessing data members.
|
| base::Lock lock_;
|
|
|
| @@ -210,6 +225,7 @@ class MEDIA_EXPORT VideoRendererBase
|
| PipelineStatusCB preroll_cb_;
|
|
|
| // Event callbacks.
|
| + PipelineStatusCB init_cb_;
|
| StatisticsCB statistics_cb_;
|
| TimeCB max_time_cb_;
|
| NaturalSizeChangedCB size_changed_cb_;
|
|
|