blob: ae16102e375c6c64e38e564171c67e8434d85279 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/capture/mojo/video_capture_types_typemap_traits.h"
#include "media/base/ipc/media_param_traits_macros.h"
#include "ui/gfx/geometry/mojo/geometry.mojom.h"
#include "ui/gfx/geometry/mojo/geometry_struct_traits.h"
namespace mojo {
// static
media::mojom::VideoPixelStorage
EnumTraits<media::mojom::VideoPixelStorage, media::VideoPixelStorage>::ToMojom(
media::VideoPixelStorage video_pixel_storage) {
DCHECK_EQ(media::PIXEL_STORAGE_CPU, video_pixel_storage);
return media::mojom::VideoPixelStorage::CPU;
}
// static
bool EnumTraits<media::mojom::VideoPixelStorage, media::VideoPixelStorage>::
FromMojom(media::mojom::VideoPixelStorage input,
media::VideoPixelStorage* out) {
DCHECK_EQ(media::mojom::VideoPixelStorage::CPU, input);
*out = media::PIXEL_STORAGE_CPU;
return true;
}
// static
media::mojom::ResolutionChangePolicy
EnumTraits<media::mojom::ResolutionChangePolicy,
media::ResolutionChangePolicy>::ToMojom(media::ResolutionChangePolicy
input) {
switch (input) {
case media::RESOLUTION_POLICY_FIXED_RESOLUTION:
return media::mojom::ResolutionChangePolicy::FIXED_RESOLUTION;
case media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO:
return media::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO;
case media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT:
return media::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT;
}
NOTREACHED();
return media::mojom::ResolutionChangePolicy::FIXED_RESOLUTION;
}
// static
bool EnumTraits<media::mojom::ResolutionChangePolicy,
media::ResolutionChangePolicy>::
FromMojom(media::mojom::ResolutionChangePolicy input,
media::ResolutionChangePolicy* output) {
switch (input) {
case media::mojom::ResolutionChangePolicy::FIXED_RESOLUTION:
*output = media::RESOLUTION_POLICY_FIXED_RESOLUTION;
return true;
case media::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO:
*output = media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO;
return true;
case media::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT:
*output = media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT;
return true;
}
NOTREACHED();
return false;
}
// static
media::mojom::PowerLineFrequency EnumTraits<
media::mojom::PowerLineFrequency,
media::PowerLineFrequency>::ToMojom(media::PowerLineFrequency input) {
switch (input) {
case media::PowerLineFrequency::FREQUENCY_DEFAULT:
return media::mojom::PowerLineFrequency::DEFAULT;
case media::PowerLineFrequency::FREQUENCY_50HZ:
return media::mojom::PowerLineFrequency::HZ_50;
case media::PowerLineFrequency::FREQUENCY_60HZ:
return media::mojom::PowerLineFrequency::HZ_60;
}
NOTREACHED();
return media::mojom::PowerLineFrequency::DEFAULT;
}
// static
bool EnumTraits<media::mojom::PowerLineFrequency, media::PowerLineFrequency>::
FromMojom(media::mojom::PowerLineFrequency input,
media::PowerLineFrequency* output) {
switch (input) {
case media::mojom::PowerLineFrequency::DEFAULT:
*output = media::PowerLineFrequency::FREQUENCY_DEFAULT;
return true;
case media::mojom::PowerLineFrequency::HZ_50:
*output = media::PowerLineFrequency::FREQUENCY_50HZ;
return true;
case media::mojom::PowerLineFrequency::HZ_60:
*output = media::PowerLineFrequency::FREQUENCY_60HZ;
return true;
}
NOTREACHED();
return false;
}
// static
media::mojom::VideoCaptureApi
EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi>::ToMojom(
media::VideoCaptureApi input) {
switch (input) {
case media::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE:
return media::mojom::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
case media::VideoCaptureApi::WIN_MEDIA_FOUNDATION:
return media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION;
case media::VideoCaptureApi::WIN_DIRECT_SHOW:
return media::mojom::VideoCaptureApi::WIN_DIRECT_SHOW;
case media::VideoCaptureApi::MACOSX_AVFOUNDATION:
return media::mojom::VideoCaptureApi::MACOSX_AVFOUNDATION;
case media::VideoCaptureApi::MACOSX_DECKLINK:
return media::mojom::VideoCaptureApi::MACOSX_DECKLINK;
case media::VideoCaptureApi::ANDROID_API1:
return media::mojom::VideoCaptureApi::ANDROID_API1;
case media::VideoCaptureApi::ANDROID_API2_LEGACY:
return media::mojom::VideoCaptureApi::ANDROID_API2_LEGACY;
case media::VideoCaptureApi::ANDROID_API2_FULL:
return media::mojom::VideoCaptureApi::ANDROID_API2_FULL;
case media::VideoCaptureApi::ANDROID_API2_LIMITED:
return media::mojom::VideoCaptureApi::ANDROID_API2_LIMITED;
case media::VideoCaptureApi::ANDROID_TANGO:
return media::mojom::VideoCaptureApi::ANDROID_TANGO;
case media::VideoCaptureApi::UNKNOWN:
return media::mojom::VideoCaptureApi::UNKNOWN;
}
NOTREACHED();
return media::mojom::VideoCaptureApi::UNKNOWN;
}
// static
bool EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi>::
FromMojom(media::mojom::VideoCaptureApi input,
media::VideoCaptureApi* output) {
switch (input) {
case media::mojom::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE:
*output = media::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
return true;
case media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION:
*output = media::VideoCaptureApi::WIN_MEDIA_FOUNDATION;
return true;
case media::mojom::VideoCaptureApi::WIN_DIRECT_SHOW:
*output = media::VideoCaptureApi::WIN_DIRECT_SHOW;
return true;
case media::mojom::VideoCaptureApi::MACOSX_AVFOUNDATION:
*output = media::VideoCaptureApi::MACOSX_AVFOUNDATION;
return true;
case media::mojom::VideoCaptureApi::MACOSX_DECKLINK:
*output = media::VideoCaptureApi::MACOSX_DECKLINK;
return true;
case media::mojom::VideoCaptureApi::ANDROID_API1:
*output = media::VideoCaptureApi::ANDROID_API1;
return true;
case media::mojom::VideoCaptureApi::ANDROID_API2_LEGACY:
*output = media::VideoCaptureApi::ANDROID_API2_LEGACY;
return true;
case media::mojom::VideoCaptureApi::ANDROID_API2_FULL:
*output = media::VideoCaptureApi::ANDROID_API2_FULL;
return true;
case media::mojom::VideoCaptureApi::ANDROID_API2_LIMITED:
*output = media::VideoCaptureApi::ANDROID_API2_LIMITED;
return true;
case media::mojom::VideoCaptureApi::ANDROID_TANGO:
*output = media::VideoCaptureApi::ANDROID_TANGO;
return true;
case media::mojom::VideoCaptureApi::UNKNOWN:
*output = media::VideoCaptureApi::UNKNOWN;
return true;
}
NOTREACHED();
return false;
}
// static
media::mojom::VideoCaptureTransportType EnumTraits<
media::mojom::VideoCaptureTransportType,
media::VideoCaptureTransportType>::ToMojom(media::VideoCaptureTransportType
input) {
switch (input) {
case media::VideoCaptureTransportType::MACOSX_USB_OR_BUILT_IN:
return media::mojom::VideoCaptureTransportType::MACOSX_USB_OR_BUILT_IN;
case media::VideoCaptureTransportType::OTHER_TRANSPORT:
return media::mojom::VideoCaptureTransportType::OTHER_TRANSPORT;
}
NOTREACHED();
return media::mojom::VideoCaptureTransportType::OTHER_TRANSPORT;
}
// static
bool EnumTraits<media::mojom::VideoCaptureTransportType,
media::VideoCaptureTransportType>::
FromMojom(media::mojom::VideoCaptureTransportType input,
media::VideoCaptureTransportType* output) {
switch (input) {
case media::mojom::VideoCaptureTransportType::MACOSX_USB_OR_BUILT_IN:
*output = media::VideoCaptureTransportType::MACOSX_USB_OR_BUILT_IN;
return true;
case media::mojom::VideoCaptureTransportType::OTHER_TRANSPORT:
*output = media::VideoCaptureTransportType::OTHER_TRANSPORT;
return true;
}
NOTREACHED();
return false;
}
// static
bool StructTraits<media::mojom::VideoCaptureFormatDataView,
media::VideoCaptureFormat>::
Read(media::mojom::VideoCaptureFormatDataView data,
media::VideoCaptureFormat* out) {
if (!data.ReadFrameSize(&out->frame_size))
return false;
out->frame_rate = data.frame_rate();
if (!data.ReadPixelFormat(&out->pixel_format))
return false;
if (!data.ReadPixelStorage(&out->pixel_storage))
return false;
return true;
}
// static
bool StructTraits<media::mojom::VideoCaptureParamsDataView,
media::VideoCaptureParams>::
Read(media::mojom::VideoCaptureParamsDataView data,
media::VideoCaptureParams* out) {
if (!data.ReadRequestedFormat(&out->requested_format))
return false;
if (!data.ReadResolutionChangePolicy(&out->resolution_change_policy))
return false;
if (!data.ReadPowerLineFrequency(&out->power_line_frequency))
return false;
return true;
}
// static
bool StructTraits<media::mojom::VideoCaptureDeviceDescriptorDataView,
media::VideoCaptureDeviceDescriptor>::
Read(media::mojom::VideoCaptureDeviceDescriptorDataView data,
media::VideoCaptureDeviceDescriptor* output) {
if (!data.ReadDisplayName(&(output->display_name)))
return false;
if (!data.ReadDeviceId(&(output->device_id)))
return false;
if (!data.ReadModelId(&(output->model_id)))
return false;
if (!data.ReadCaptureApi(&(output->capture_api)))
return false;
if (!data.ReadTransportType(&(output->transport_type)))
return false;
return true;
}
// static
bool StructTraits<media::mojom::VideoCaptureDeviceInfoDataView,
media::VideoCaptureDeviceInfo>::
Read(media::mojom::VideoCaptureDeviceInfoDataView data,
media::VideoCaptureDeviceInfo* output) {
if (!data.ReadDescriptor(&(output->descriptor)))
return false;
if (!data.ReadSupportedFormats(&(output->supported_formats)))
return false;
return true;
}
} // namespace mojo