diff options
author | mcasas@chromium.org <mcasas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-05 23:34:24 +0000 |
---|---|---|
committer | mcasas@chromium.org <mcasas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-05 23:34:24 +0000 |
commit | 4f06db6531473ee946f1d2a82f2d78e4c82d0667 (patch) | |
tree | b768fc37de6034922a899e16eb338ea50af97029 /content/renderer/media/video_capture_impl.cc | |
parent | bddb76d80b4cacd5f9af0c0cbbafc843f7b676ed (diff) | |
download | chromium_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.cc | 24 |
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) { |