Index: content/browser/renderer_host/media/media_stream_manager.cc |
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
index 029b0638c4e3ced5da47532ccb1c32e5b6504b51..f69ea75ace0173281c57161328cd94745a13e741 100644 |
--- a/content/browser/renderer_host/media/media_stream_manager.cc |
+++ b/content/browser/renderer_host/media/media_stream_manager.cc |
@@ -218,6 +218,27 @@ MediaStreamDevices ConvertToMediaStreamDevices( |
return devices; |
} |
+bool FindFirstDeviceIdForVideoKind(const MediaDeviceInfoArray& devices, |
+ VideoKind video_kind, |
+ VideoCaptureManager* video_capture_manager, |
+ std::string* device_id) { |
+ for (const auto& device : devices) { |
+ media::VideoCaptureFormats formats; |
+ video_capture_manager->GetDeviceSupportedFormats(device.device_id, |
+ &formats); |
+ for (const auto& format : formats) { |
+ if ((video_kind == VIDEO_KIND_DEPTH && |
+ format.pixel_format == media::PIXEL_FORMAT_Y16) || |
+ (video_kind == VIDEO_KIND_COLOR && |
+ format.pixel_format != media::PIXEL_FORMAT_Y16)) { |
+ *device_id = device.device_id; |
+ return true; |
+ } |
+ } |
+ } |
+ return false; |
+} |
+ |
} // namespace |
@@ -808,11 +829,17 @@ bool MediaStreamManager::GetRequestedDeviceCaptureId( |
const DeviceRequest* request, |
MediaStreamType type, |
const MediaDeviceInfoArray& devices, |
- std::string* device_id) const { |
+ std::string* device_id) { |
if (type == MEDIA_DEVICE_AUDIO_CAPTURE) { |
return PickDeviceId(request->salt, request->security_origin, |
request->controls.audio, devices, device_id); |
} else if (type == MEDIA_DEVICE_VIDEO_CAPTURE) { |
+ if (request->controls.video.device_id.empty() && |
Guido Urdaneta
2017/02/07 10:26:03
There is a CL (http://crrev.com/2669243004/) close
aleksandar.stojiljkovic
2017/02/07 11:33:49
Thanks. Looks good.
|
+ request->controls.video_kind != VIDEO_KIND_NO_CONSTRAINT) { |
+ return FindFirstDeviceIdForVideoKind(devices, |
+ request->controls.video_kind, |
+ video_capture_manager(), device_id); |
+ } |
return PickDeviceId(request->salt, request->security_origin, |
request->controls.video, devices, device_id); |
} else { |