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); |
}; |