summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-17 00:27:43 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-17 00:27:43 +0000
commitad89f79b5d18b63ed71100ecdd316a6392f24c9d (patch)
tree02d8eefaa9f8ad40e9d9dd1606df24e648df5697 /content
parentebb1b5894a55befe47b40648762491ad0d4c0b9d (diff)
downloadchromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.zip
chromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.tar.gz
chromium_src-ad89f79b5d18b63ed71100ecdd316a6392f24c9d.tar.bz2
separate interface function and internal task function
fix comparator in VideoCaptureContollerID BUG=none TEST=try bots Review URL: http://codereview.chromium.org/7187002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89428 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/media/video_capture_controller_event_handler.cc2
-rw-r--r--content/renderer/media/video_capture_impl.cc106
-rw-r--r--content/renderer/media/video_capture_impl.h11
-rw-r--r--content/renderer/media/video_capture_impl_unittest.cc2
4 files changed, 74 insertions, 47 deletions
diff --git a/content/browser/renderer_host/media/video_capture_controller_event_handler.cc b/content/browser/renderer_host/media/video_capture_controller_event_handler.cc
index 61ccc4a..e6edc41 100644
--- a/content/browser/renderer_host/media/video_capture_controller_event_handler.cc
+++ b/content/browser/renderer_host/media/video_capture_controller_event_handler.cc
@@ -11,5 +11,5 @@ VideoCaptureControllerID::VideoCaptureControllerID(int32 rid, int did)
bool VideoCaptureControllerID::operator<(
const VideoCaptureControllerID& vc) const {
- return this->routing_id < vc.routing_id && this->device_id < vc.device_id;
+ return this->routing_id < vc.routing_id || this->device_id < vc.device_id;
}
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc
index 54ccded..8e2d324 100644
--- a/content/renderer/media/video_capture_impl.cc
+++ b/content/renderer/media/video_capture_impl.cc
@@ -92,12 +92,51 @@ void VideoCaptureImpl::StartCapture(
const VideoCaptureCapability& capability) {
DCHECK_EQ(capability.raw_type, media::VideoFrame::I420);
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::StartCapture, handler,
- capability));
- return;
- }
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoStartCapture, handler,
+ capability));
+}
+
+void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoStopCapture, handler));
+}
+
+void VideoCaptureImpl::OnBufferCreated(
+ base::SharedMemoryHandle handle,
+ int length, int buffer_id) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoBufferCreated,
+ handle, length, buffer_id));
+}
+
+void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoBufferReceived,
+ buffer_id, timestamp));
+}
+
+void VideoCaptureImpl::OnStateChanged(const media::VideoCapture::State& state) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoStateChanged, state));
+}
+
+void VideoCaptureImpl::OnDeviceInfoReceived(
+ const media::VideoCaptureParams& device_info) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoDeviceInfoReceived,
+ device_info));
+}
+
+void VideoCaptureImpl::OnDelegateAdded(int32 device_id) {
+ ml_proxy_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &VideoCaptureImpl::DoDelegateAdded, device_id));
+}
+
+void VideoCaptureImpl::DoStartCapture(
+ media::VideoCapture::EventHandler* handler,
+ const VideoCaptureCapability& capability) {
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
ClientInfo::iterator it = pending_clients_.find(handler);
@@ -164,12 +203,9 @@ void VideoCaptureImpl::StartCapture(
StartCaptureInternal();
}
-void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::StopCapture, handler));
- return;
- }
+void VideoCaptureImpl::DoStopCapture(
+ media::VideoCapture::EventHandler* handler) {
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
ClientInfo::iterator it = pending_clients_.find(handler);
if (it != pending_clients_.end()) {
@@ -232,15 +268,10 @@ void VideoCaptureImpl::StopCapture(media::VideoCapture::EventHandler* handler) {
}
}
-void VideoCaptureImpl::OnBufferCreated(
+void VideoCaptureImpl::DoBufferCreated(
base::SharedMemoryHandle handle,
int length, int buffer_id) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::OnBufferCreated,
- handle, length, buffer_id));
- return;
- }
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
media::VideoCapture::VideoFrameBuffer* buffer;
DCHECK(cached_dibs_.find(buffer_id) == cached_dibs_.end());
@@ -257,13 +288,8 @@ void VideoCaptureImpl::OnBufferCreated(
cached_dibs_[buffer_id] = dib_buffer;
}
-void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::OnBufferReceived,
- buffer_id, timestamp));
- return;
- }
+void VideoCaptureImpl::DoBufferReceived(int buffer_id, base::Time timestamp) {
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
if (state_ != kStarted) {
Send(new VideoCaptureHostMsg_BufferReady(0, device_id_, buffer_id));
@@ -282,13 +308,8 @@ void VideoCaptureImpl::OnBufferReceived(int buffer_id, base::Time timestamp) {
Send(new VideoCaptureHostMsg_BufferReady(0, device_id_, buffer_id));
}
-void VideoCaptureImpl::OnStateChanged(
- const media::VideoCapture::State& state) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::OnStateChanged, state));
- return;
- }
+void VideoCaptureImpl::DoStateChanged(const media::VideoCapture::State& state) {
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
switch (state) {
case media::VideoCapture::kStarted:
@@ -321,26 +342,18 @@ void VideoCaptureImpl::OnStateChanged(
}
}
-void VideoCaptureImpl::OnDeviceInfoReceived(
+void VideoCaptureImpl::DoDeviceInfoReceived(
const media::VideoCaptureParams& device_info) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::OnDeviceInfoReceived,
- device_info));
- return;
- }
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
for (ClientInfo::iterator it = clients_.begin(); it != clients_.end(); it++) {
it->first->OnDeviceInfoReceived(this, device_info);
}
}
-void VideoCaptureImpl::OnDelegateAdded(int32 device_id) {
- if (!ml_proxy_->BelongsToCurrentThread()) {
- ml_proxy_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &VideoCaptureImpl::OnDelegateAdded, device_id));
- return;
- }
+void VideoCaptureImpl::DoDelegateAdded(int32 device_id) {
+ DLOG(INFO) << "DoDelegateAdded: device_id " << device_id;
+ DCHECK(ml_proxy_->BelongsToCurrentThread());
device_id_ = device_id;
for (ClientInfo::iterator it = pending_clients_.begin();
@@ -389,6 +402,7 @@ void VideoCaptureImpl::StartCaptureInternal() {
media::VideoCaptureParams params;
params.width = width_;
params.height = height_;
+ params.frame_per_second = frame_rate_;
params.session_id = session_id_;
Send(new VideoCaptureHostMsg_Start(0, device_id_, params));
diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h
index 10ee056..b603652 100644
--- a/content/renderer/media/video_capture_impl.h
+++ b/content/renderer/media/video_capture_impl.h
@@ -71,6 +71,17 @@ class VideoCaptureImpl
VideoCaptureMessageFilter* filter);
virtual ~VideoCaptureImpl();
+ void DoStartCapture(media::VideoCapture::EventHandler* handler,
+ const VideoCaptureCapability& capability);
+ void DoStopCapture(media::VideoCapture::EventHandler* handler);
+
+ void DoBufferCreated(base::SharedMemoryHandle handle,
+ int length, int buffer_id);
+ void DoBufferReceived(int buffer_id, base::Time timestamp);
+ void DoStateChanged(const media::VideoCapture::State& state);
+ void DoDeviceInfoReceived(const media::VideoCaptureParams& device_info);
+ void DoDelegateAdded(int32 device_id);
+
void Init();
void DeInit(Task* task);
void StopDevice();
diff --git a/content/renderer/media/video_capture_impl_unittest.cc b/content/renderer/media/video_capture_impl_unittest.cc
index b513425..8df8b2d 100644
--- a/content/renderer/media/video_capture_impl_unittest.cc
+++ b/content/renderer/media/video_capture_impl_unittest.cc
@@ -107,9 +107,11 @@ TEST_F(VideoCaptureImplTest, Simple) {
.WillOnce(Return());
video_capture_impl_->StartCapture(client.get(), capability);
+ message_loop_->RunAllPending();
EXPECT_CALL(*client, OnStopped(_))
.WillOnce(Return());
video_capture_impl_->StopCapture(client.get());
+ message_loop_->RunAllPending();
}