Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(930)

Unified Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 2609863004: Pass camera facing to WebKit (Closed)
Patch Set: fix trybot errors Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..14889a8385160a1144f2b0076ba847fef4e2f2fb 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -25,6 +25,7 @@
#include "base/task_runner_util.h"
#include "base/threading/thread.h"
#include "base/threading/thread_local.h"
+#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/renderer_host/media/audio_input_device_manager.h"
@@ -59,6 +60,7 @@
#if defined(OS_CHROMEOS)
#include "chromeos/audio/cras_audio_handler.h"
+#include "media/capture/video/linux/camera_facing_chromeos.h"
#endif
namespace content {
@@ -67,6 +69,12 @@ base::LazyInstance<base::ThreadLocalPointer<MediaStreamManager>>::Leaky
g_media_stream_manager_tls_ptr = LAZY_INSTANCE_INITIALIZER;
namespace {
+
+#if defined(OS_CHROMEOS)
+base::LazyInstance<media::CameraFacingChromeOS>::Leaky g_camera_facing =
+ LAZY_INSTANCE_INITIALIZER;
hta - Chromium 2017/01/12 19:36:41 If this is a singleton, does it make the assumptio
shenghao 2017/01/13 11:09:34 No.
+#endif
+
// Creates a random label used to identify requests.
std::string RandomLabel() {
// An earlier PeerConnection spec [1] defined MediaStream::label alphabet as
@@ -207,12 +215,34 @@ MediaDeviceType ConvertToMediaDeviceType(MediaStreamType stream_type) {
return NUM_MEDIA_DEVICE_TYPES;
}
+VideoFacingMode GetVideoFacing(std::string device_id,
+ std::string model_id,
+ MediaStreamType stream_type) {
+#if defined(OS_CHROMEOS)
+ media::CameraFacingChromeOS::LensFacing facing =
+ g_camera_facing.Get().GetCameraFacing(device_id, model_id);
+ switch (facing) {
+ case media::CameraFacingChromeOS::LensFacing::FRONT:
+ return VideoFacingMode::MEDIA_VIDEO_FACING_USER;
+ case media::CameraFacingChromeOS::LensFacing::BACK:
+ return VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT;
+ }
+#endif
+ if (IsScreenCaptureMediaType(stream_type)) {
+ return VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT;
hta - Chromium 2017/01/12 19:36:41 How does this choice make sense? I'd have thought
shenghao 2017/01/13 11:09:34 done
+ }
+ return VideoFacingMode::MEDIA_VIDEO_FACING_NONE;
+}
+
MediaStreamDevices ConvertToMediaStreamDevices(
MediaStreamType stream_type,
const MediaDeviceInfoArray& device_infos) {
+ base::ThreadRestrictions::SetIOAllowed(true);
jochen (gone - plz use gerrit) 2017/01/12 11:54:41 why is this required? how long will the operation
shenghao 2017/01/13 11:09:34 Because we need to access camera config file when
MediaStreamDevices devices;
for (const auto& info : device_infos) {
- devices.emplace_back(stream_type, info.device_id, info.label);
+ devices.emplace_back(
+ stream_type, info.device_id, info.label,
+ GetVideoFacing(info.device_id, info.model_id, stream_type));
}
return devices;

Powered by Google App Engine
This is Rietveld 408576698