| Index: content/renderer/media/video_capture_impl.h
|
| ===================================================================
|
| --- content/renderer/media/video_capture_impl.h (revision 145737)
|
| +++ content/renderer/media/video_capture_impl.h (working copy)
|
| @@ -6,6 +6,16 @@
|
| // interfaces for clients to Start/Stop capture. It also communicates to clients
|
| // when buffer is ready, state of capture device is changed.
|
|
|
| +// VideoCaptureImpl is also a delegate of VideoCaptureMessageFilter which
|
| +// relays operation of capture device to browser process and receives response
|
| +// from browser process.
|
| +
|
| +// The media::VideoCapture and VideoCaptureMessageFilter::Delegate are
|
| +// asynchronous interfaces, which means callers can call those interfaces
|
| +// from any threads without worrying about thread safety.
|
| +// The |capture_message_loop_proxy_| is the working thread of VideoCaptureImpl.
|
| +// All non-const members are accessed only on that working thread.
|
| +
|
| #ifndef CONTENT_RENDERER_MEDIA_VIDEO_CAPTURE_IMPL_H_
|
| #define CONTENT_RENDERER_MEDIA_VIDEO_CAPTURE_IMPL_H_
|
|
|
| @@ -51,27 +61,31 @@
|
| friend class MockVideoCaptureImpl;
|
|
|
| struct DIBBuffer;
|
| + typedef std::map<media::VideoCapture::EventHandler*,
|
| + media::VideoCaptureCapability> ClientInfo;
|
|
|
| VideoCaptureImpl(media::VideoCaptureSessionId id,
|
| base::MessageLoopProxy* capture_message_loop_proxy,
|
| VideoCaptureMessageFilter* filter);
|
| virtual ~VideoCaptureImpl();
|
|
|
| - void DoStartCapture(media::VideoCapture::EventHandler* handler,
|
| - const media::VideoCaptureCapability& capability);
|
| - void DoStopCapture(media::VideoCapture::EventHandler* handler);
|
| - void DoFeedBuffer(scoped_refptr<VideoFrameBuffer> buffer);
|
| + void DoStartCaptureOnCaptureThread(
|
| + media::VideoCapture::EventHandler* handler,
|
| + const media::VideoCaptureCapability& capability);
|
| + void DoStopCaptureOnCaptureThread(media::VideoCapture::EventHandler* handler);
|
| + void DoFeedBufferOnCaptureThread(scoped_refptr<VideoFrameBuffer> buffer);
|
|
|
| - void DoBufferCreated(base::SharedMemoryHandle handle,
|
| - int length, int buffer_id);
|
| - void DoBufferReceived(int buffer_id, base::Time timestamp);
|
| - void DoStateChanged(video_capture::State state);
|
| - void DoDeviceInfoReceived(const media::VideoCaptureParams& device_info);
|
| - void DoDelegateAdded(int32 device_id);
|
| + void DoBufferCreatedOnCaptureThread(base::SharedMemoryHandle handle,
|
| + int length, int buffer_id);
|
| + void DoBufferReceivedOnCaptureThread(int buffer_id, base::Time timestamp);
|
| + void DoStateChangedOnCaptureThread(video_capture::State state);
|
| + void DoDeviceInfoReceivedOnCaptureThread(
|
| + const media::VideoCaptureParams& device_info);
|
| + void DoDelegateAddedOnCaptureThread(int32 device_id);
|
|
|
| void Init();
|
| void DeInit(base::Closure task);
|
| - void DoDeInit(base::Closure task);
|
| + void DoDeInitOnCaptureThread(base::Closure task);
|
| void StopDevice();
|
| void RestartCapture();
|
| void StartCaptureInternal();
|
| @@ -80,19 +94,19 @@
|
| virtual void Send(IPC::Message* message);
|
|
|
| // Helpers.
|
| - bool ClientHasDIB();
|
| + bool ClientHasDIB() const;
|
| + bool RemoveClient(media::VideoCapture::EventHandler* handler,
|
| + ClientInfo* clients);
|
|
|
| - scoped_refptr<VideoCaptureMessageFilter> message_filter_;
|
| - scoped_refptr<base::MessageLoopProxy> capture_message_loop_proxy_;
|
| - scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_;
|
| + 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_;
|
|
|
| - // Pool of DIBs.
|
| - typedef std::map<int /* buffer_id */, DIBBuffer*> CachedDIB;
|
| + // Pool of DIBs. The key is buffer_id.
|
| + typedef std::map<int, DIBBuffer*> CachedDIB;
|
| CachedDIB cached_dibs_;
|
|
|
| - typedef std::map<media::VideoCapture::EventHandler*,
|
| - media::VideoCaptureCapability> ClientInfo;
|
| ClientInfo clients_;
|
|
|
| ClientInfo clients_pending_on_filter_;
|
|
|