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

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: wez@ nits. 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..7321e49f6a54e42e5591d787977ddf4a67fd0256 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,29 +69,34 @@ 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);
-
// MediaStreamVideoSink implementation. Called on the main thread.
void OnReadyStateChanged(
blink::WebMediaStreamSource::ReadyState state) override;
- 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_;
+ // Inner class used for trampolining received frames from IO thread to
+ // compositor thread.
+ class FrameReceiver;
+ std::unique_ptr<FrameReceiver> frame_receiver_;
+ // Inner class used for transfering frames on compositor thread and running
+ // |repaint_cb_|.
+ class FrameDeliverer;
+ std::unique_ptr<FrameDeliverer> frame_deliverer_;
+
+ 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* const gpu_factories_;
- base::WeakPtrFactory<MediaStreamVideoRendererSink> weak_factory_;
+ base::ThreadChecker main_thread_checker_;
DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSink);
};

Powered by Google App Engine
This is Rietveld 408576698