Index: content/browser/renderer_host/media/video_capture_manager.cc |
=================================================================== |
--- content/browser/renderer_host/media/video_capture_manager.cc (revision 89645) |
+++ content/browser/renderer_host/media/video_capture_manager.cc (working copy) |
@@ -27,24 +27,24 @@ |
: vc_device_thread_("VideoCaptureManagerThread"), |
listener_(NULL), |
new_capture_session_id_(kFirstSessionId), |
- devices_(), |
use_fake_device_(false) { |
vc_device_thread_.Start(); |
} |
VideoCaptureManager::~VideoCaptureManager() { |
+ DCHECK(devices_.empty()); |
vc_device_thread_.Stop(); |
} |
-bool VideoCaptureManager::Register(MediaStreamProviderListener* listener) { |
+void VideoCaptureManager::Register(MediaStreamProviderListener* listener) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(!listener_); |
listener_ = listener; |
- return true; |
} |
void VideoCaptureManager::Unregister() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ DCHECK(listener_); |
listener_ = NULL; |
} |
@@ -58,13 +58,12 @@ |
&VideoCaptureManager::OnEnumerateDevices)); |
} |
-MediaCaptureSessionId VideoCaptureManager::Open( |
- const MediaCaptureDeviceInfo& device) { |
+int VideoCaptureManager::Open(const StreamDeviceInfo& device) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(listener_); |
// Generate a new id for this device |
- MediaCaptureSessionId video_capture_session_id = new_capture_session_id_++; |
+ int video_capture_session_id = new_capture_session_id_++; |
vc_device_thread_.message_loop()->PostTask( |
FROM_HERE, |
@@ -76,7 +75,7 @@ |
return video_capture_session_id; |
} |
-void VideoCaptureManager::Close(MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::Close(int capture_session_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(listener_); |
@@ -112,6 +111,11 @@ |
stopped_task)); |
} |
+void VideoCaptureManager::Error( |
+ const media::VideoCaptureSessionId& capture_session_id) { |
+ PostOnError(capture_session_id, kDeviceNotAvailable); |
+} |
+ |
void VideoCaptureManager::UseFakeDevice() { |
use_fake_device_ = true; |
} |
@@ -123,27 +127,22 @@ |
void VideoCaptureManager::OnEnumerateDevices() { |
DCHECK(IsOnCaptureDeviceThread()); |
- scoped_ptr<media::VideoCaptureDevice::Names> device_names( |
- new media::VideoCaptureDevice::Names()); |
- GetAvailableDevices(device_names.get()); |
+ media::VideoCaptureDevice::Names device_names; |
+ GetAvailableDevices(&device_names); |
- MediaCaptureDevices devices; |
+ StreamDeviceInfoArray devices; |
for (media::VideoCaptureDevice::Names::iterator it = |
- device_names.get()->begin(); it != device_names.get()->end(); ++it) { |
+ device_names.begin(); it != device_names.end(); ++it) { |
bool opened = DeviceOpened(*it); |
- devices.push_back(MediaCaptureDeviceInfo(kVideoCapture, it->device_name, |
- it->unique_id, opened)); |
+ devices.push_back(StreamDeviceInfo(kVideoCapture, it->device_name, |
+ it->unique_id, opened)); |
} |
PostOnDevicesEnumerated(devices); |
- |
- // Clean-up |
- devices.clear(); |
- device_names.get()->clear(); |
} |
-void VideoCaptureManager::OnOpen(MediaCaptureSessionId capture_session_id, |
- const MediaCaptureDeviceInfo device) { |
+void VideoCaptureManager::OnOpen(int capture_session_id, |
+ const StreamDeviceInfo& device) { |
DCHECK(IsOnCaptureDeviceThread()); |
DCHECK(devices_.find(capture_session_id) == devices_.end()); |
@@ -175,8 +174,7 @@ |
PostOnOpened(capture_session_id); |
} |
-void VideoCaptureManager::OnClose( |
- MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::OnClose(int capture_session_id) { |
DCHECK(IsOnCaptureDeviceThread()); |
VideoCaptureDevices::iterator it = devices_.find(capture_session_id); |
@@ -195,19 +193,23 @@ |
const media::VideoCaptureParams capture_params, |
media::VideoCaptureDevice::EventHandler* video_capture_receiver) { |
DCHECK(IsOnCaptureDeviceThread()); |
+ DCHECK(video_capture_receiver != NULL); |
// Solution for not using MediaStreamManager |
// This session id won't be returned by Open() |
if (capture_params.session_id == kStartOpenSessionId) { |
// Start() is called without using Open(), we need to open a device |
- scoped_ptr<media::VideoCaptureDevice::Names> device_names( |
- new media::VideoCaptureDevice::Names()); |
- GetAvailableDevices(device_names.get()); |
+ media::VideoCaptureDevice::Names device_names; |
+ GetAvailableDevices(&device_names); |
+ if (device_names.empty()) { |
+ // No devices available. |
+ video_capture_receiver->OnError(); |
+ return; |
+ } |
+ StreamDeviceInfo device(kVideoCapture, |
+ device_names.front().device_name, |
+ device_names.front().unique_id, false); |
- MediaCaptureDeviceInfo device(kVideoCapture, |
- device_names.get()->front().device_name, |
- device_names.get()->front().unique_id, false); |
- |
// Call OnOpen to open using the first device in the list |
OnOpen(capture_params.session_id, device); |
} |
@@ -253,8 +255,7 @@ |
} |
} |
-void VideoCaptureManager::OnOpened( |
- MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::OnOpened(int capture_session_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (listener_ == NULL) { |
Leandro Graciá Gil
2011/06/21 18:00:26
I've tried to find exactly where the style guideli
scherkus (not reviewing)
2011/06/21 18:03:42
there's no hard-and-fast rule about it... so it bo
mflodman1
2011/06/21 19:23:51
I agree. Done.
|
// Listener has been removed |
Leandro Graciá Gil
2011/06/21 18:00:26
Style says comments should end with a period. Plea
mflodman1
2011/06/21 19:23:51
Done.
|
@@ -263,8 +264,7 @@ |
listener_->Opened(kVideoCapture, capture_session_id); |
} |
-void VideoCaptureManager::OnClosed( |
- MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::OnClosed(int capture_session_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (listener_ == NULL) { |
// Listener has been removed |
@@ -274,16 +274,16 @@ |
} |
void VideoCaptureManager::OnDevicesEnumerated( |
- const MediaCaptureDevices& devices) { |
+ const StreamDeviceInfoArray& devices) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- if (listener_ == NULL) { |
+ if (!listener_) { |
// Listener has been removed |
return; |
} |
listener_->DevicesEnumerated(kVideoCapture, devices); |
} |
-void VideoCaptureManager::OnError(MediaCaptureSessionId capture_session_id, |
+void VideoCaptureManager::OnError(int capture_session_id, |
MediaStreamProviderError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (listener_ == NULL) { |
@@ -293,8 +293,7 @@ |
listener_->Error(kVideoCapture, capture_session_id, error); |
} |
-void VideoCaptureManager::PostOnOpened( |
- MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::PostOnOpened(int capture_session_id) { |
DCHECK(IsOnCaptureDeviceThread()); |
BrowserThread::PostTask(BrowserThread::IO, |
FROM_HERE, |
@@ -303,8 +302,7 @@ |
capture_session_id)); |
} |
-void VideoCaptureManager::PostOnClosed( |
- MediaCaptureSessionId capture_session_id) { |
+void VideoCaptureManager::PostOnClosed(int capture_session_id) { |
DCHECK(IsOnCaptureDeviceThread()); |
BrowserThread::PostTask(BrowserThread::IO, |
FROM_HERE, |
@@ -313,9 +311,9 @@ |
capture_session_id)); |
} |
-void VideoCaptureManager::PostOnDevicesEnumerated(MediaCaptureDevices devices) { |
+void VideoCaptureManager::PostOnDevicesEnumerated( |
+ const StreamDeviceInfoArray& devices) { |
DCHECK(IsOnCaptureDeviceThread()); |
- |
BrowserThread::PostTask(BrowserThread::IO, |
FROM_HERE, |
NewRunnableMethod( |
@@ -324,7 +322,7 @@ |
devices)); |
} |
-void VideoCaptureManager::PostOnError(MediaCaptureSessionId capture_session_id, |
+void VideoCaptureManager::PostOnError(int capture_session_id, |
MediaStreamProviderError error) { |
// Don't check thread here, can be called from both IO thread and device |
// thread. |
@@ -366,8 +364,7 @@ |
return false; |
} |
-bool VideoCaptureManager::DeviceOpened( |
- const MediaCaptureDeviceInfo& device_info) { |
+bool VideoCaptureManager::DeviceOpened(const StreamDeviceInfo& device_info) { |
DCHECK(IsOnCaptureDeviceThread()); |
for (VideoCaptureDevices::iterator it = devices_.begin(); |