summaryrefslogtreecommitdiffstats
path: root/content/renderer/media/video_capture_impl.cc
diff options
context:
space:
mode:
authormcasas@chromium.org <mcasas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-05 23:34:24 +0000
committermcasas@chromium.org <mcasas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-05 23:34:24 +0000
commit4f06db6531473ee946f1d2a82f2d78e4c82d0667 (patch)
treeb768fc37de6034922a899e16eb338ea50af97029 /content/renderer/media/video_capture_impl.cc
parentbddb76d80b4cacd5f9af0c0cbbafc843f7b676ed (diff)
downloadchromium_src-4f06db6531473ee946f1d2a82f2d78e4c82d0667.zip
chromium_src-4f06db6531473ee946f1d2a82f2d78e4c82d0667.tar.gz
chromium_src-4f06db6531473ee946f1d2a82f2d78e4c82d0667.tar.bz2
Wire GetDeviceFormatsInUse from VideoCaptureManager to VideoCaptureImpl
The intended sequence of method calls, from the renderer side VideoCaptureImpl to browser side VideoCaptureManager and back follows this draft: -VideoCaptureImpl::GetDeviceFormatsInUse() ---VideoCaptureMessageFilter::Send() ----VideoCaptureHost::OnGetDeviceFormatsInUse() ----Send(new VideoCaptureMsg_DeviceFormatsInUse(...) ---VideoCaptureMessageFilter::OnDeviceFormatsInUse() --VideoCaptureImpl::OnDeviceFormatsInUse() The final hop back happens via a callback passed to VCI:GetDeviceFormatsInUse() on call time. Unittests Added where applicable. BUG=309554 Review URL: https://codereview.chromium.org/134193006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249151 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media/video_capture_impl.cc')
-rw-r--r--content/renderer/media/video_capture_impl.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc
index 38be11f..1912f09 100644
--- a/content/renderer/media/video_capture_impl.cc
+++ b/content/renderer/media/video_capture_impl.cc
@@ -99,6 +99,14 @@ void VideoCaptureImpl::GetDeviceSupportedFormats(
base::Unretained(this), media::BindToCurrentLoop(callback)));
}
+void VideoCaptureImpl::GetDeviceFormatsInUse(
+ const DeviceFormatsInUseCallback& callback) {
+ DCHECK(!callback.is_null());
+ io_message_loop_proxy_->PostTask(FROM_HERE,
+ base::Bind(&VideoCaptureImpl::GetDeviceFormatsInUseOnIOThread,
+ base::Unretained(this), media::BindToCurrentLoop(callback)));
+}
+
void VideoCaptureImpl::InitOnIOThread() {
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
message_filter_->AddDelegate(this);
@@ -189,6 +197,15 @@ void VideoCaptureImpl::GetDeviceSupportedFormatsOnIOThread(
session_id_));
}
+void VideoCaptureImpl::GetDeviceFormatsInUseOnIOThread(
+ const DeviceFormatsInUseCallback& callback) {
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
+ device_formats_in_use_callback_queue_.push_back(callback);
+ if (device_formats_in_use_callback_queue_.size() == 1)
+ Send(
+ new VideoCaptureHostMsg_GetDeviceFormatsInUse(device_id_, session_id_));
+}
+
void VideoCaptureImpl::OnBufferCreated(
base::SharedMemoryHandle handle,
int length, int buffer_id) {
@@ -324,7 +341,14 @@ void VideoCaptureImpl::OnDeviceSupportedFormatsEnumerated(
for (size_t i = 0; i < device_formats_callback_queue_.size(); ++i)
device_formats_callback_queue_[i].Run(supported_formats);
device_formats_callback_queue_.clear();
+}
+void VideoCaptureImpl::OnDeviceFormatsInUseReceived(
+ const media::VideoCaptureFormats& formats_in_use) {
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
+ for (size_t i = 0; i < device_formats_in_use_callback_queue_.size(); ++i)
+ device_formats_in_use_callback_queue_[i].Run(formats_in_use);
+ device_formats_in_use_callback_queue_.clear();
}
void VideoCaptureImpl::OnDelegateAdded(int32 device_id) {