Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_manager.cc |
| diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc |
| index 4e104b4cbcd1ac3ec29ca0e70adada1181d3fc38..c1f9e05c19b75eac5bf1092322c8119ac7ebe14d 100644 |
| --- a/content/browser/renderer_host/media/video_capture_manager.cc |
| +++ b/content/browser/renderer_host/media/video_capture_manager.cc |
| @@ -7,10 +7,12 @@ |
| #include <set> |
| #include "base/bind.h" |
| +#include "base/logging.h" |
| #include "base/stl_util.h" |
| #include "content/browser/renderer_host/media/video_capture_controller.h" |
| #include "content/browser/renderer_host/media/video_capture_controller_event_handler.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/common/media_stream_request.h" |
| #include "media/video/capture/fake_video_capture_device.h" |
| #include "media/video/capture/video_capture_device.h" |
| @@ -38,10 +40,13 @@ struct VideoCaptureManager::Controller { |
| Handlers handlers; |
| }; |
| -VideoCaptureManager::VideoCaptureManager() |
| - : listener_(NULL), |
| +VideoCaptureManager::VideoCaptureManager( |
| + media_stream::MediaStreamType device_type) |
| + : device_type_(device_type), |
| + listener_(NULL), |
| new_capture_session_id_(kFirstSessionId), |
| use_fake_device_(false) { |
| + DCHECK(content::IsVideoMediaType(device_type_)); |
| } |
| VideoCaptureManager::~VideoCaptureManager() { |
| @@ -134,8 +139,7 @@ void VideoCaptureManager::OnEnumerateDevices() { |
| device_names.begin(); it != device_names.end(); ++it) { |
| bool opened = DeviceOpened(*it); |
| devices.push_back(StreamDeviceInfo( |
| - content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, it->device_name, |
| - it->unique_id, opened)); |
| + device_type_, it->device_name, it->unique_id, opened)); |
| } |
| PostOnDevicesEnumerated(devices); |
| @@ -161,11 +165,24 @@ void VideoCaptureManager::OnOpen(int capture_session_id, |
| vc_device_name.device_name = device.name; |
| vc_device_name.unique_id = device.device_id; |
| - if (!use_fake_device_) { |
| - video_capture_device = media::VideoCaptureDevice::Create(vc_device_name); |
| - } else { |
| + if (use_fake_device_) { |
| video_capture_device = |
| media::FakeVideoCaptureDevice::Create(vc_device_name); |
| + } else { |
| + switch (device_type_) { |
| + case content::MEDIA_VIDEO_DEVICE_CAPTURE: |
| + video_capture_device = |
| + media::VideoCaptureDevice::Create(vc_device_name); |
| + break; |
| + case content::MEDIA_TAB_VIDEO_CAPTURE: |
| + // TODO(miu): Replace this stub with the actual implementation. |
| + video_capture_device = |
| + media::FakeVideoCaptureDevice::Create(vc_device_name); |
| + break; |
| + default: |
| + NOTIMPLEMENTED(); |
| + break; |
| + } |
| } |
| if (!video_capture_device) { |
| PostOnError(capture_session_id, kDeviceNotAvailable); |
| @@ -279,8 +296,7 @@ void VideoCaptureManager::OnOpened(int capture_session_id) { |
| // Listener has been removed. |
| return; |
| } |
| - listener_->Opened(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
| - capture_session_id); |
| + listener_->Opened(device_type_, capture_session_id); |
| } |
| void VideoCaptureManager::OnClosed(int capture_session_id) { |
| @@ -289,8 +305,7 @@ void VideoCaptureManager::OnClosed(int capture_session_id) { |
| // Listener has been removed. |
| return; |
| } |
| - listener_->Closed(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
| - capture_session_id); |
| + listener_->Closed(device_type_, capture_session_id); |
| } |
| void VideoCaptureManager::OnDevicesEnumerated( |
| @@ -300,8 +315,7 @@ void VideoCaptureManager::OnDevicesEnumerated( |
| // Listener has been removed. |
| return; |
| } |
| - listener_->DevicesEnumerated(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
| - devices); |
| + listener_->DevicesEnumerated(device_type_, devices); |
| } |
| void VideoCaptureManager::OnError(int capture_session_id, |
| @@ -311,8 +325,7 @@ void VideoCaptureManager::OnError(int capture_session_id, |
| // Listener has been removed. |
| return; |
| } |
| - listener_->Error(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
| - capture_session_id, error); |
| + listener_->Error(device_type_, capture_session_id, error); |
| } |
| void VideoCaptureManager::PostOnOpened(int capture_session_id) { |
| @@ -358,10 +371,25 @@ void VideoCaptureManager::GetAvailableDevices( |
| media::VideoCaptureDevice::Names* device_names) { |
| DCHECK(IsOnDeviceThread()); |
| - if (!use_fake_device_) { |
| - media::VideoCaptureDevice::GetDeviceNames(device_names); |
| - } else { |
| + if (use_fake_device_) { |
| media::FakeVideoCaptureDevice::GetDeviceNames(device_names); |
|
no longer working on chromium
2012/09/05 14:19:41
nit, early return here.
miu
2012/09/06 04:40:35
Done.
|
| + } else { |
| + switch (device_type_) { |
| + case content::MEDIA_VIDEO_DEVICE_CAPTURE: |
| + media::VideoCaptureDevice::GetDeviceNames(device_names); |
| + break; |
| + case content::MEDIA_TAB_VIDEO_CAPTURE: { |
| + // TODO(miu): Replace this stub with the actual implementation. |
| + media::VideoCaptureDevice::Name name; |
| + name.unique_id = "/dev/video0"; |
| + name.device_name = "Stub Tab Video Capture"; |
| + device_names->push_back(name); |
| + break; |
| + } |
| + default: |
| + NOTIMPLEMENTED(); |
| + break; |
| + } |
| } |
| } |
| @@ -491,9 +519,9 @@ media::VideoCaptureDevice* VideoCaptureManager::GetDeviceInternal( |
| // No devices available. |
| return NULL; |
| } |
| - StreamDeviceInfo device(content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
| - device_names.front().device_name, |
| - device_names.front().unique_id, false); |
| + StreamDeviceInfo device( |
| + device_type_, device_names.front().device_name, |
| + device_names.front().unique_id, false); |
| // Call OnOpen to open using the first device in the list. |
| OnOpen(capture_session_id, device); |