Chromium Code Reviews| Index: content/renderer/media/media_stream_video_capturer_source.h |
| diff --git a/content/renderer/media/media_stream_video_capturer_source.h b/content/renderer/media/media_stream_video_capturer_source.h |
| index b719887b50b87c975fa7133bb1731df753d3f3a3..0238d1f013c6cef61db16982f43af2fdb3fb9746 100644 |
| --- a/content/renderer/media/media_stream_video_capturer_source.h |
| +++ b/content/renderer/media/media_stream_video_capturer_source.h |
| @@ -7,26 +7,21 @@ |
| #include "base/callback.h" |
| #include "base/message_loop/message_loop_proxy.h" |
| +#include "base/threading/thread_checker.h" |
| #include "content/common/media/video_capture.h" |
| #include "content/renderer/media/media_stream_video_source.h" |
| -#include "media/video/capture/video_capture.h" |
| namespace content { |
| -class VideoCaptureHandle; |
| - |
| // VideoCapturerDelegate is a delegate used by MediaStreamVideoCapturerSource |
| // for local video capturer. It uses VideoCaptureImplManager to start / stop |
| // and receive I420 frames from Chrome's video capture implementation. |
| +// |
| +// This is a render thread only object. |
| class CONTENT_EXPORT VideoCapturerDelegate |
| - : public media::VideoCapture::EventHandler, |
| - public base::RefCountedThreadSafe<VideoCapturerDelegate> { |
| + : public base::RefCountedThreadSafe<VideoCapturerDelegate> { |
| public: |
| - typedef base::Callback<void(const scoped_refptr<media::VideoFrame>&)> |
| - NewFrameCallback; |
| typedef base::Callback<void(bool running)> StartedCallback; |
| - typedef base::Callback<void(const media::VideoCaptureFormats& formats)> |
| - SupportedFormatsCallback; |
| explicit VideoCapturerDelegate( |
| const StreamDeviceInfo& device_info); |
| @@ -38,34 +33,21 @@ class CONTENT_EXPORT VideoCapturerDelegate |
| virtual void GetCurrentSupportedFormats( |
| int max_requested_width, |
| int max_requested_height, |
| - const SupportedFormatsCallback& callback); |
| + const VideoCaptureDeviceFormatsCB& callback); |
| // Starts deliver frames using the resolution in |params|. |
| // |new_frame_callback| is triggered when a new video frame is available. |
| // |started_callback| is triggered before the first video frame is received |
| // or if the underlying video capturer fails to start. |
| - virtual void StartDeliver( |
| + virtual void StartToDeliver( |
|
Ami GONE FROM CHROMIUM
2014/04/24 21:04:31
From earlier: why is this not StartCapture?
Alpha Left Google
2014/04/24 22:50:34
Done.
|
| const media::VideoCaptureParams& params, |
| - const NewFrameCallback& new_frame_callback, |
| + const VideoCaptureDeliverFrameCB& new_frame_callback, |
| const StartedCallback& started_callback); |
| // Stops deliver frames and clears all callbacks including the |
| // SupportedFormatsCallback callback. |
| virtual void StopDeliver(); |
| - protected: |
| - // media::VideoCapture::EventHandler implementation. |
| - // These functions are called on the IO thread (same as where |
| - // |capture_engine_| runs). |
| - virtual void OnStarted(media::VideoCapture* capture) OVERRIDE; |
| - virtual void OnStopped(media::VideoCapture* capture) OVERRIDE; |
| - virtual void OnPaused(media::VideoCapture* capture) OVERRIDE; |
| - virtual void OnError(media::VideoCapture* capture, int error_code) OVERRIDE; |
| - virtual void OnRemoved(media::VideoCapture* capture) OVERRIDE; |
| - virtual void OnFrameReady( |
| - media::VideoCapture* capture, |
| - const scoped_refptr<media::VideoFrame>& frame) OVERRIDE; |
| - |
| private: |
| friend class base::RefCountedThreadSafe<VideoCapturerDelegate>; |
| friend class MockVideoCapturerDelegate; |
| @@ -73,9 +55,10 @@ class CONTENT_EXPORT VideoCapturerDelegate |
| virtual ~VideoCapturerDelegate(); |
| void OnFrameReadyOnRenderThread( |
| - media::VideoCapture* capture, |
| - const scoped_refptr<media::VideoFrame>& frame); |
| - void OnErrorOnRenderThread(media::VideoCapture* capture); |
| + const scoped_refptr<media::VideoFrame>& frame, |
| + const media::VideoCaptureFormat& format, |
| + const base::TimeTicks& timestamp); |
| + void OnStateUpdateOnRenderThread(VideoCaptureState state); |
| void OnDeviceFormatsInUseReceived(const media::VideoCaptureFormats& formats); |
| void OnDeviceSupportedFormatsEnumerated( |
| const media::VideoCaptureFormats& formats); |
| @@ -83,23 +66,25 @@ class CONTENT_EXPORT VideoCapturerDelegate |
| // The id identifies which video capture device is used for this video |
| // capture session. |
| media::VideoCaptureSessionId session_id_; |
| - scoped_ptr<VideoCaptureHandle> capture_engine_; |
| + base::Closure release_device_cb_; |
| + base::Closure stop_capture_cb_; |
| bool is_screen_cast_; |
| - // Accessed on the thread where StartDeliver is called. |
| + // Accessed on the thread where StartToDeliver is called. |
|
Ami GONE FROM CHROMIUM
2014/04/24 21:04:31
l.20 told me that this class is only accessed on a
Alpha Left Google
2014/04/24 22:50:34
This comment is not necessary.
|
| bool got_first_frame_; |
| - // |new_frame_callback_| is provided to this class in StartDeliver and must be |
| - // valid until StopDeliver is called. |
| - NewFrameCallback new_frame_callback_; |
| - // |started_callback| is provided to this class in StartDeliver and must be |
| + // |new_frame_callback_| is provided to this class in StartToDeliver and must |
| + // be valid until StopDeliver is called. |
| + VideoCaptureDeliverFrameCB new_frame_callback_; |
| + // |started_callback| is provided to this class in StartToDeliver and must be |
| // valid until StopDeliver is called. |
| StartedCallback started_callback_; |
| - // Message loop of the caller of StartDeliver. |
| - scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; |
| - SupportedFormatsCallback source_formats_callback_; |
| + VideoCaptureDeviceFormatsCB source_formats_callback_; |
| + |
| + // Bound to the render thread. |
| + base::ThreadChecker thread_checker_; |
| DISALLOW_COPY_AND_ASSIGN(VideoCapturerDelegate); |
| }; |