Index: content/renderer/media/video_capture_impl.h |
diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h |
index 2215cef4336456920329f98ab0c500decbee8f12..767145add8551b5e7bf29720c2176f0a94475f1f 100644 |
--- a/content/renderer/media/video_capture_impl.h |
+++ b/content/renderer/media/video_capture_impl.h |
@@ -16,16 +16,15 @@ |
// The |capture_message_loop_proxy_| is the working thread of VideoCaptureImpl. |
Ami GONE FROM CHROMIUM
2014/01/06 23:37:14
This comment is now bogus. Please replace it with
Alpha Left Google
2014/01/08 00:23:36
Done.
|
// All non-const members are accessed only on that working thread. |
// |
-// Implementation note: tasks are posted bound to Unretained(this) to both the |
-// I/O and Capture threads and this is safe (even though the I/O thread is |
-// scoped to the renderer process and the capture_message_loop_proxy_ thread is |
-// scoped to the VideoCaptureImplManager) because VideoCaptureImplManager only |
-// triggers deletion of its VideoCaptureImpl's by calling DeInit which detours |
-// through the capture & I/O threads, so as long as nobody posts tasks after the |
-// DeInit() call is made, it is guaranteed none of these Unretained posted tasks |
-// will dangle after the delete goes through. The "as long as" is guaranteed by |
-// clients of VideoCaptureImplManager not using devices after they've |
-// RemoveDevice'd them. |
+// Implementation note: tasks are posted bound to Unretained(this) to the I/O |
+// thread and this is safe (even though the I/O thread is scoped to the renderer |
+// process) because VideoCaptureImplManager only triggers deletion of its |
+// VideoCaptureImpl's by calling DeInit which detours through the I/O thread, so |
+// as long as nobody posts tasks after the DeInit() call is made, it is |
+// guaranteed none of these Unretained posted tasks will dangle after the delete |
+// goes through. The "as long as" is guaranteed by clients of |
+// VideoCaptureImplManager not using devices after they've released |
+// VideoCaptureHandle, which is a wrapper of this object. |
#ifndef CONTENT_RENDERER_MEDIA_VIDEO_CAPTURE_IMPL_H_ |
#define CONTENT_RENDERER_MEDIA_VIDEO_CAPTURE_IMPL_H_ |
@@ -49,6 +48,11 @@ namespace content { |
class CONTENT_EXPORT VideoCaptureImpl |
: public media::VideoCapture, public VideoCaptureMessageFilter::Delegate { |
public: |
+ virtual ~VideoCaptureImpl(); |
+ |
+ // Stop/resume delivering video frames to clients, based on flag |suspend|. |
+ void SuspendCapture(bool suspend); |
Ami GONE FROM CHROMIUM
2014/01/06 23:37:14
ToggleCapture?
(this predates your CL so fine to l
Alpha Left Google
2014/01/08 00:23:36
I prefer to leave it as is.
|
+ |
// media::VideoCapture interface. |
virtual void StartCapture( |
media::VideoCapture::EventHandler* handler, |
@@ -57,20 +61,7 @@ class CONTENT_EXPORT VideoCaptureImpl |
virtual bool CaptureStarted() OVERRIDE; |
virtual int CaptureFrameRate() OVERRIDE; |
- // VideoCaptureMessageFilter::Delegate interface. |
- virtual void OnBufferCreated(base::SharedMemoryHandle handle, |
- int length, |
- int buffer_id) OVERRIDE; |
- virtual void OnBufferDestroyed(int buffer_id) OVERRIDE; |
- virtual void OnBufferReceived( |
- int buffer_id, |
- base::Time timestamp, |
- const media::VideoCaptureFormat& format) OVERRIDE; |
- virtual void OnStateChanged(VideoCaptureState state) OVERRIDE; |
- virtual void OnDelegateAdded(int32 device_id) OVERRIDE; |
- |
- // Stop/resume delivering video frames to clients, based on flag |suspend|. |
- virtual void SuspendCapture(bool suspend); |
+ media::VideoCaptureSessionId session_id() const { return session_id_; } |
private: |
friend class VideoCaptureImplManager; |
@@ -82,38 +73,30 @@ class CONTENT_EXPORT VideoCaptureImpl |
media::VideoCaptureParams> ClientInfo; |
VideoCaptureImpl(media::VideoCaptureSessionId session_id, |
- base::MessageLoopProxy* capture_message_loop_proxy, |
VideoCaptureMessageFilter* filter); |
- virtual ~VideoCaptureImpl(); |
- void DoStartCaptureOnCaptureThread( |
- media::VideoCapture::EventHandler* handler, |
- const media::VideoCaptureParams& params); |
- void DoStopCaptureOnCaptureThread(media::VideoCapture::EventHandler* handler); |
- void DoBufferCreatedOnCaptureThread(base::SharedMemoryHandle handle, |
- int length, |
- int buffer_id); |
- void DoBufferDestroyedOnCaptureThread(int buffer_id); |
- void DoBufferReceivedOnCaptureThread( |
+ // VideoCaptureMessageFilter::Delegate interface. |
+ virtual void OnBufferCreated(base::SharedMemoryHandle handle, |
+ int length, |
+ int buffer_id) OVERRIDE; |
+ virtual void OnBufferDestroyed(int buffer_id) OVERRIDE; |
+ virtual void OnBufferReceived( |
int buffer_id, |
base::Time timestamp, |
- const media::VideoCaptureFormat& format); |
- void DoClientBufferFinishedOnCaptureThread( |
+ const media::VideoCaptureFormat& format) OVERRIDE; |
+ virtual void OnStateChanged(VideoCaptureState state) OVERRIDE; |
+ virtual void OnDelegateAdded(int32 device_id) OVERRIDE; |
+ |
+ // Sends a IPC message to browser all clients are done with the video frame. |
Ami GONE FROM CHROMIUM
2014/01/06 23:37:14
Please rewrite comment.
Alpha Left Google
2014/01/08 00:23:36
Done.
|
+ void OnClientBufferFinished( |
int buffer_id, |
const scoped_refptr<ClientBuffer>& buffer); |
- void DoStateChangedOnCaptureThread(VideoCaptureState state); |
- void DoDelegateAddedOnCaptureThread(int32 device_id); |
- |
- void DoSuspendCaptureOnCaptureThread(bool suspend); |
void Init(); |
void DeInit(base::Closure task); |
- void DoDeInitOnCaptureThread(base::Closure task); |
void StopDevice(); |
void RestartCapture(); |
void StartCaptureInternal(); |
- void AddDelegateOnIOThread(); |
- void RemoveDelegateOnIOThread(base::Closure task); |
virtual void Send(IPC::Message* message); |
// Helpers. |
@@ -121,7 +104,6 @@ class CONTENT_EXPORT VideoCaptureImpl |
ClientInfo* clients); |
const scoped_refptr<VideoCaptureMessageFilter> message_filter_; |
- const scoped_refptr<base::MessageLoopProxy> capture_message_loop_proxy_; |
const scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; |
int device_id_; |
const int session_id_; |
@@ -135,7 +117,7 @@ class CONTENT_EXPORT VideoCaptureImpl |
ClientInfo clients_pending_on_restart_; |
// Member params_ represents the video format requested by the |
- // client to this class via DoStartCaptureOnCaptureThread. |
+ // client to this class via DoStartCaptureOnIOThread. |
Ami GONE FROM CHROMIUM
2014/01/06 23:37:14
DoStartCaptureOnIOThread is not a thing. I think
Alpha Left Google
2014/01/08 00:23:36
Done.
|
media::VideoCaptureParams params_; |
// The device's video capture format sent from browser process side. |