Commit abd2d5e3 authored by Christian Fremerey's avatar Christian Fremerey Committed by Commit Bot

[Video Capture Service] Fix for VideoFacing constraint not working

The struct media::VideoCaptureDeviceDescriptor contains a field for facing_mode.
The corresponding mojo struct does not contain this field. Because of it, the
information will be dropped when crossing a Mojo boundary, i.e. when the video
capture service is used.

Bug: 829114
Change-Id: I8193c3db125450e80dd9f30b7babee3063013ef9
Reviewed-on: https://chromium-review.googlesource.com/1140956Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575840}
parent 0b9c7a24
......@@ -50,6 +50,12 @@ enum PowerLineFrequency {
HZ_60
};
enum VideoFacingMode {
NONE,
USER,
ENVIRONMENT
};
enum VideoCaptureApi {
LINUX_V4L2_SINGLE_PLANE,
WIN_MEDIA_FOUNDATION,
......@@ -115,6 +121,7 @@ struct VideoCaptureDeviceDescriptor {
string display_name;
string device_id;
string model_id;
VideoFacingMode facing_mode;
VideoCaptureApi capture_api;
VideoCaptureTransportType transport_type;
VideoCaptureDeviceDescriptorCameraCalibration? camera_calibration;
......
......@@ -273,6 +273,44 @@ bool EnumTraits<media::mojom::VideoCaptureBufferType,
return false;
}
// static
media::mojom::VideoFacingMode
EnumTraits<media::mojom::VideoFacingMode, media::VideoFacingMode>::ToMojom(
media::VideoFacingMode input) {
switch (input) {
case media::VideoFacingMode::MEDIA_VIDEO_FACING_NONE:
return media::mojom::VideoFacingMode::NONE;
case media::VideoFacingMode::MEDIA_VIDEO_FACING_USER:
return media::mojom::VideoFacingMode::USER;
case media::VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT:
return media::mojom::VideoFacingMode::ENVIRONMENT;
case media::VideoFacingMode::NUM_MEDIA_VIDEO_FACING_MODES:
NOTREACHED();
return media::mojom::VideoFacingMode::NONE;
}
NOTREACHED();
return media::mojom::VideoFacingMode::NONE;
}
// static
bool EnumTraits<media::mojom::VideoFacingMode, media::VideoFacingMode>::
FromMojom(media::mojom::VideoFacingMode input,
media::VideoFacingMode* output) {
switch (input) {
case media::mojom::VideoFacingMode::NONE:
*output = media::VideoFacingMode::MEDIA_VIDEO_FACING_NONE;
return true;
case media::mojom::VideoFacingMode::USER:
*output = media::VideoFacingMode::MEDIA_VIDEO_FACING_USER;
return true;
case media::mojom::VideoFacingMode::ENVIRONMENT:
*output = media::VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT;
return true;
}
NOTREACHED();
return false;
}
// static
media::mojom::VideoCaptureApi
EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi>::ToMojom(
......@@ -441,6 +479,8 @@ bool StructTraits<media::mojom::VideoCaptureDeviceDescriptorDataView,
return false;
if (!data.ReadModelId(&(output->model_id)))
return false;
if (!data.ReadFacingMode(&(output->facing)))
return false;
if (!data.ReadCaptureApi(&(output->capture_api)))
return false;
if (!data.ReadTransportType(&(output->transport_type)))
......
......@@ -5,6 +5,7 @@
#ifndef MEDIA_CAPTURE_MOJOM_VIDEO_CAPTURE_TYPES_MOJOM_TRAITS_H_
#define MEDIA_CAPTURE_MOJOM_VIDEO_CAPTURE_TYPES_MOJOM_TRAITS_H_
#include "media/base/video_facing.h"
#include "media/capture/mojom/video_capture_types.mojom.h"
#include "media/capture/video/video_capture_device_descriptor.h"
#include "media/capture/video/video_capture_device_info.h"
......@@ -50,6 +51,13 @@ struct EnumTraits<media::mojom::VideoCaptureBufferType,
media::VideoCaptureBufferType* out);
};
template <>
struct EnumTraits<media::mojom::VideoFacingMode, media::VideoFacingMode> {
static media::mojom::VideoFacingMode ToMojom(media::VideoFacingMode input);
static bool FromMojom(media::mojom::VideoFacingMode input,
media::VideoFacingMode* output);
};
template <>
struct EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi> {
static media::mojom::VideoCaptureApi ToMojom(media::VideoCaptureApi input);
......@@ -160,6 +168,11 @@ struct StructTraits<media::mojom::VideoCaptureDeviceDescriptorDataView,
return input.model_id;
}
static media::VideoFacingMode facing_mode(
const media::VideoCaptureDeviceDescriptor& input) {
return input.facing;
}
static media::VideoCaptureApi capture_api(
const media::VideoCaptureDeviceDescriptor& input) {
return input.capture_api;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment