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

Unified Diff: media/renderers/video_renderer_impl.h

Issue 2684103005: Allow media track switching. (Closed)
Patch Set: Fixed comments Created 3 years, 8 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
« no previous file with comments | « media/renderers/renderer_impl_unittest.cc ('k') | media/renderers/video_renderer_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « media/renderers/renderer_impl_unittest.cc ('k') | media/renderers/video_renderer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698