| Index: media/renderers/video_renderer_impl.h
|
| diff --git a/media/renderers/video_renderer_impl.h b/media/renderers/video_renderer_impl.h
|
| index 475167e068c0fb70296388a3c9e4fb55d5c9cfaf..45af124b9cd7ba921f2ec7d7f2635614bbde7f12 100644
|
| --- a/media/renderers/video_renderer_impl.h
|
| +++ b/media/renderers/video_renderer_impl.h
|
| @@ -28,6 +28,7 @@
|
| #include "media/base/video_renderer_sink.h"
|
| #include "media/filters/decoder_stream.h"
|
| #include "media/filters/video_renderer_algorithm.h"
|
| +#include "media/renderers/default_renderer_factory.h"
|
| #include "media/renderers/gpu_video_accelerator_factories.h"
|
| #include "media/video/gpu_memory_buffer_video_frame_pool.h"
|
|
|
| @@ -56,7 +57,7 @@ class MEDIA_EXPORT VideoRendererImpl
|
| const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
|
| const scoped_refptr<base::TaskRunner>& worker_task_runner,
|
| VideoRendererSink* sink,
|
| - ScopedVector<VideoDecoder> decoders,
|
| + const CreateVideoDecodersCB& create_video_decoders_cb,
|
| bool drop_frames,
|
| GpuVideoAcceleratorFactories* gpu_factories,
|
| const scoped_refptr<MediaLog>& media_log);
|
| @@ -220,20 +221,22 @@ class MEDIA_EXPORT VideoRendererImpl
|
| // Important detail: being in kPlaying doesn't imply that video is being
|
| // rendered. Rather, it means that the renderer is ready to go. The actual
|
| // rendering of video is controlled by time advancing via |get_time_cb_|.
|
| + // Video renderer can be reinitialized completely by calling Initialize again
|
| + // when it is in a kFlushed state with video sink stopped.
|
| //
|
| - // kUninitialized
|
| - // | Initialize()
|
| - // |
|
| - // V
|
| - // kInitializing
|
| - // | Decoders initialized
|
| - // |
|
| - // V Decoders reset
|
| - // kFlushed <------------------ kFlushing
|
| - // | StartPlayingFrom() ^
|
| - // | |
|
| - // | | Flush()
|
| - // `---------> kPlaying --------'
|
| + // kUninitialized
|
| + // +------> | Initialize()
|
| + // | |
|
| + // | V
|
| + // | kInitializing
|
| + // | | Decoders initialized
|
| + // | |
|
| + // | V Decoders reset
|
| + // ---- kFlushed <------------------ kFlushing
|
| + // | StartPlayingFrom() ^
|
| + // | |
|
| + // | | Flush()
|
| + // `---------> kPlaying --------'
|
| enum State {
|
| kUninitialized,
|
| kInitializing,
|
| @@ -243,6 +246,12 @@ class MEDIA_EXPORT VideoRendererImpl
|
| };
|
| State state_;
|
|
|
| + // TODO(servolk): Consider using DecoderFactory here instead of the
|
| + // CreateVideoDecodersCB.
|
| + CreateVideoDecodersCB create_video_decoders_cb_;
|
| + GpuVideoAcceleratorFactories* gpu_factories_;
|
| + scoped_refptr<base::TaskRunner> worker_task_runner_;
|
| +
|
| // Keep track of the outstanding read on the VideoFrameStream. Flushing can
|
| // only complete once the read has completed.
|
| bool pending_read_;
|
|
|