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

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

Issue 2472273002: Move passing of WebRTC rendering frames from main thread to compositor thread (Closed)
Patch Set: perkj@ comments. Created 4 years, 1 month 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 425ca6cc2c25fa6fbd70f7e98a92ba611e09dd43..c884c8a8490b010ed3b92b36b2f29a844599d2fc 100644
--- a/content/renderer/media/media_stream_video_renderer_sink.h
+++ b/content/renderer/media/media_stream_video_renderer_sink.h
@@ -7,12 +7,11 @@
#include "base/callback.h"
#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
+#include "base/threading/thread_checker.h"
#include "content/common/content_export.h"
#include "content/common/media/video_capture.h"
#include "content/public/renderer/media_stream_video_renderer.h"
#include "content/public/renderer/media_stream_video_sink.h"
-#include "media/video/gpu_memory_buffer_video_frame_pool.h"
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
#include "ui/gfx/geometry/size.h"
@@ -22,6 +21,7 @@ class TaskRunner;
} // namespace base
namespace media {
+class GpuMemoryBufferVideoFramePool;
class GpuVideoAcceleratorFactories;
} // namespace media
@@ -47,6 +47,7 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
const blink::WebMediaStreamTrack& video_track,
const base::Closure& error_cb,
const MediaStreamVideoRenderer::RepaintCB& repaint_cb,
+ const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
const scoped_refptr<base::TaskRunner>& worker_task_runner,
media::GpuVideoAcceleratorFactories* gpu_factories);
@@ -57,9 +58,6 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
void Resume() override;
void Pause() override;
- void SetGpuMemoryBufferVideoForTesting(
- media::GpuMemoryBufferVideoFramePool* gpu_memory_buffer_pool);
-
protected:
~MediaStreamVideoRendererSink() override;
@@ -71,9 +69,12 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
STOPPED,
};
- void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame,
- base::TimeTicks estimated_capture_time);
- void FrameReady(const scoped_refptr<media::VideoFrame>& frame);
+ // Inner class used for trampolining frames from IO thread to compositor
DaleCurtis 2016/11/15 00:30:16 No reason to define these here, just put them with
emircan 2016/11/15 19:54:02 Done.
+ // thread.
+ class FrameReceiverOnIO;
+ // Inner class used for transfering frames on compositor thread and running
+ // |repaint_cb_|.
+ class FrameDelivererOnCompositor;
// MediaStreamVideoSink implementation. Called on the main thread.
void OnReadyStateChanged(
@@ -81,19 +82,20 @@ class CONTENT_EXPORT MediaStreamVideoRendererSink
void RenderSignalingFrame();
+ // Helper methods used for testing
+ State GetStateForTesting();
+ void SetGpuMemoryBufferVideoForTesting(
+ media::GpuMemoryBufferVideoFramePool* gpu_memory_buffer_pool);
+
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.
- std::unique_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_;
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
+ std::unique_ptr<FrameReceiverOnIO> frame_receiver_;
+ std::unique_ptr<FrameDelivererOnCompositor> frame_deliverer_;
- base::WeakPtrFactory<MediaStreamVideoRendererSink> weak_factory_;
+ const scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
+ base::ThreadChecker main_thread_checker_;
DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSink);
};

Powered by Google App Engine
This is Rietveld 408576698