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

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

Issue 120893002: Eliminate video capture thread in renderer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: compile warning Created 7 years 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/video_capture_impl.h
diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h
index 2215cef4336456920329f98ab0c500decbee8f12..0550766def3e5e495b6067b509305a447d59844b 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.
// 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 capture & I/O
Jói 2013/12/27 13:34:35 This line references the capture thread, I think y
Alpha Left Google 2013/12/27 21:30:01 Done.
+// 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 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);
+
// 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.
+ 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.
media::VideoCaptureParams params_;
// The device's video capture format sent from browser process side.

Powered by Google App Engine
This is Rietveld 408576698