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

Unified Diff: content/renderer/media/media_stream_video_renderer_sink.h

Issue 1358883003: Use GpuMemoryBufferVideoFramePool for WebMediaPlayerMS and MediaStreamVideoRendererSink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@send-gmbs
Patch Set: Created 5 years, 3 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: content/renderer/media/media_stream_video_renderer_sink.h
diff --git a/content/renderer/media/media_stream_video_renderer_sink.h b/content/renderer/media/media_stream_video_renderer_sink.h
index ed30c2ac7c3fc7450ed37f7eb3fc77a47b20746e..bcfddc16446d71a4329717126582dfc6641bdd17 100644
--- a/content/renderer/media/media_stream_video_renderer_sink.h
+++ b/content/renderer/media/media_stream_video_renderer_sink.h
@@ -7,10 +7,13 @@
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
+#include "base/single_thread_task_runner.h"
#include "content/common/content_export.h"
#include "content/common/media/video_capture.h"
#include "content/public/renderer/media_stream_video_sink.h"
#include "content/public/renderer/video_frame_provider.h"
+#include "media/renderers/gpu_video_accelerator_factories.h"
+#include "media/video/gpu_memory_buffer_video_frame_pool.h"
mcasas 2015/10/02 19:30:46 You can forward declare SingleThreadTaskRunner (ac
emircan 2015/10/03 00:11:26 Done.
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
#include "ui/gfx/geometry/size.h"
@@ -36,9 +39,13 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
: NON_EXPORTED_BASE(public VideoFrameProvider),
NON_EXPORTED_BASE(public MediaStreamVideoSink) {
public:
- MediaStreamVideoRendererSink(const blink::WebMediaStreamTrack& video_track,
- const base::Closure& error_cb,
- const RepaintCB& repaint_cb);
+ MediaStreamVideoRendererSink(
+ const blink::WebMediaStreamTrack& video_track,
+ const base::Closure& error_cb,
+ const RepaintCB& repaint_cb,
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::TaskRunner>& worker_task_runner,
+ const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories);
// VideoFrameProvider implementation. Called on the main thread.
void Start() override;
@@ -59,6 +66,11 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame,
base::TimeTicks estimated_capture_time);
+ void MaybeCreateHardwareFrameOnMediaThread(
+ const scoped_refptr<media::VideoFrame>& frame);
+ void MaybeCreateHardwareFrameCompletedOnMediaThread(
+ const scoped_refptr<media::VideoFrame>& frame);
+ void FrameReady(const scoped_refptr<media::VideoFrame>& frame);
// MediaStreamVideoSink implementation. Called on the main thread.
void OnReadyStateChanged(
@@ -68,10 +80,16 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
const base::Closure error_cb_;
const RepaintCB repaint_cb_;
+
const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
State state_;
gfx::Size frame_size_;
const blink::WebMediaStreamTrack video_track_;
+
+ // Pool of GpuMemoryBuffers and resources used to create hardware frames.
+ scoped_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_;
+ const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+
base::WeakPtrFactory<MediaStreamVideoRendererSink> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSink);

Powered by Google App Engine
This is Rietveld 408576698