diff options
author | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-20 19:57:40 +0000 |
---|---|---|
committer | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-20 19:57:40 +0000 |
commit | ab2c4737d17cc4ce21e16e5382f19ce7aac8d7d7 (patch) | |
tree | aa8b742f1721b64c1ccc9486616bf05b5640de9d /content/renderer/media/video_capture_impl.h | |
parent | 13a8f498151ac4e1e771cb3d70d56f38848be04a (diff) | |
download | chromium_src-ab2c4737d17cc4ce21e16e5382f19ce7aac8d7d7.zip chromium_src-ab2c4737d17cc4ce21e16e5382f19ce7aac8d7d7.tar.gz chromium_src-ab2c4737d17cc4ce21e16e5382f19ce7aac8d7d7.tar.bz2 |
reland patch http://codereview.chromium.org/7204008 after webrtc build has been fixed.
BUG=none
TEST=try bots
Review URL: http://codereview.chromium.org/7458006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93235 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media/video_capture_impl.h')
-rw-r--r-- | content/renderer/media/video_capture_impl.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h index b603652..d61e8df 100644 --- a/content/renderer/media/video_capture_impl.h +++ b/content/renderer/media/video_capture_impl.h @@ -14,7 +14,6 @@ #include "content/renderer/media/video_capture_message_filter.h" #include "media/video/capture/video_capture.h" -#include "ui/gfx/surface/transport_dib.h" namespace base { class MessageLoopProxy; @@ -28,6 +27,7 @@ class VideoCaptureImpl virtual void StartCapture(media::VideoCapture::EventHandler* handler, const VideoCaptureCapability& capability); virtual void StopCapture(media::VideoCapture::EventHandler* handler); + virtual void FeedBuffer(scoped_refptr<VideoFrameBuffer> buffer); virtual bool CaptureStarted(); virtual int CaptureWidth(); virtual int CaptureHeight(); @@ -43,18 +43,13 @@ class VideoCaptureImpl virtual void OnDelegateAdded(int32 device_id); bool pending_start() { - return (new_width_ > 0 && new_height_ > 0); + return (new_params_.width > 0 && new_params_.height > 0); } private: friend class VideoCaptureImplManager; friend class VideoCaptureImplTest; - - enum State { - kStarted, - kStopping, - kStopped - }; + friend class MockVideoCaptureImpl; struct DIBBuffer { public: @@ -74,6 +69,7 @@ class VideoCaptureImpl void DoStartCapture(media::VideoCapture::EventHandler* handler, const VideoCaptureCapability& capability); void DoStopCapture(media::VideoCapture::EventHandler* handler); + void DoFeedBuffer(scoped_refptr<VideoFrameBuffer> buffer); void DoBufferCreated(base::SharedMemoryHandle handle, int length, int buffer_id); @@ -92,7 +88,6 @@ class VideoCaptureImpl virtual void Send(IPC::Message* message); scoped_refptr<VideoCaptureMessageFilter> message_filter_; - media::VideoCaptureSessionId session_id_; scoped_refptr<base::MessageLoopProxy> ml_proxy_; int device_id_; @@ -100,6 +95,11 @@ class VideoCaptureImpl typedef std::map<int, DIBBuffer*> CachedDIB; CachedDIB cached_dibs_; + // DIBs at client side. The mapped value |int| means number of clients which + // hold this dib. + typedef std::map<media::VideoCapture::VideoFrameBuffer*, int> ClientSideDIB; + ClientSideDIB client_side_dibs_; + typedef std::map<media::VideoCapture::EventHandler*, VideoCaptureCapability> ClientInfo; ClientInfo clients_; @@ -107,13 +107,14 @@ class VideoCaptureImpl ClientInfo pending_clients_; - int width_; - int height_; - int frame_rate_; media::VideoFrame::Format video_type_; - int new_width_; - int new_height_; + // The parameter is being used in current capture session. A capture session + // starts with StartCapture and ends with StopCapture. + media::VideoCaptureParams current_params_; + + // The parameter will be used in next capture session. + media::VideoCaptureParams new_params_; State state_; DISALLOW_COPY_AND_ASSIGN(VideoCaptureImpl); |