summaryrefslogtreecommitdiffstats
path: root/content/renderer/media/video_capture_impl.h
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-20 19:57:40 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-20 19:57:40 +0000
commitab2c4737d17cc4ce21e16e5382f19ce7aac8d7d7 (patch)
treeaa8b742f1721b64c1ccc9486616bf05b5640de9d /content/renderer/media/video_capture_impl.h
parent13a8f498151ac4e1e771cb3d70d56f38848be04a (diff)
downloadchromium_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.h29
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);