| /* |
| * Copyright 2017 The Chromium OS 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 <hardware/camera3.h> |
| |
| #include "cros-camera/camera_buffer_manager.h" |
| #include "mojo/camera3.mojom.h" |
| #include "mojo/camera_common.mojom.h" |
| |
| namespace cros { |
| |
| namespace { |
| |
| #define CHECK_MOJOM_DEFINITION(name, enum_class) \ |
| static_assert(name == static_cast<int>(cros::mojom::enum_class::name), \ |
| "Definition of " #name \ |
| " is inconsistent between mojom and Android framework"); |
| |
| #define CHECK_BUFFER_TYPE_DEFINITION(type) \ |
| CHECK_MOJOM_DEFINITION(type, Camera3DeviceOps::BufferType) |
| |
| CHECK_BUFFER_TYPE_DEFINITION(GRALLOC); |
| CHECK_BUFFER_TYPE_DEFINITION(SHM); |
| |
| // We must make sure the HAL pixel format definitions in mojom and from Android |
| // framework are consistent. |
| #define CHECK_FORMAT_DEFINITION(format) \ |
| CHECK_MOJOM_DEFINITION(format, HalPixelFormat) |
| |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_RGBA_8888); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_RGBX_8888); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_BGRA_8888); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_YCrCb_420_SP); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_YCbCr_422_I); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_BLOB); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_YCbCr_420_888); |
| CHECK_FORMAT_DEFINITION(HAL_PIXEL_FORMAT_YV12); |
| |
| #define CHECK_CAMERA_FACING_DEFINITION(facing) \ |
| CHECK_MOJOM_DEFINITION(facing, CameraFacing) |
| |
| CHECK_CAMERA_FACING_DEFINITION(CAMERA_FACING_BACK); |
| CHECK_CAMERA_FACING_DEFINITION(CAMERA_FACING_FRONT); |
| CHECK_CAMERA_FACING_DEFINITION(CAMERA_FACING_EXTERNAL); |
| |
| #define CHECK_STREAM_TYPE_DEFINITION(type) \ |
| CHECK_MOJOM_DEFINITION(type, Camera3StreamType) |
| |
| CHECK_STREAM_TYPE_DEFINITION(CAMERA3_STREAM_OUTPUT); |
| CHECK_STREAM_TYPE_DEFINITION(CAMERA3_STREAM_INPUT); |
| CHECK_STREAM_TYPE_DEFINITION(CAMERA3_STREAM_BIDIRECTIONAL); |
| CHECK_STREAM_TYPE_DEFINITION(CAMERA3_NUM_STREAM_TYPES); |
| |
| #define CHECK_STREAM_ROTATION_DEFINITION(rotation) \ |
| CHECK_MOJOM_DEFINITION(rotation, Camera3StreamRotation) |
| |
| CHECK_STREAM_ROTATION_DEFINITION(CAMERA3_STREAM_ROTATION_0); |
| CHECK_STREAM_ROTATION_DEFINITION(CAMERA3_STREAM_ROTATION_90); |
| CHECK_STREAM_ROTATION_DEFINITION(CAMERA3_STREAM_ROTATION_180); |
| CHECK_STREAM_ROTATION_DEFINITION(CAMERA3_STREAM_ROTATION_270); |
| |
| #define CHECK_STREAM_CONFIGURATION_MODE_DEFINITION(mode) \ |
| CHECK_MOJOM_DEFINITION(mode, Camera3StreamConfigurationMode) |
| |
| CHECK_STREAM_CONFIGURATION_MODE_DEFINITION( |
| CAMERA3_STREAM_CONFIGURATION_NORMAL_MODE); |
| CHECK_STREAM_CONFIGURATION_MODE_DEFINITION( |
| CAMERA3_STREAM_CONFIGURATION_CONSTRAINED_HIGH_SPEED_MODE); |
| |
| #define CHECK_REQUEST_TEMPLATE_DEFINITION(temp) \ |
| CHECK_MOJOM_DEFINITION(temp, Camera3RequestTemplate) |
| |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_PREVIEW); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_STILL_CAPTURE); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_VIDEO_RECORD); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_VIDEO_SNAPSHOT); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_MANUAL); |
| CHECK_REQUEST_TEMPLATE_DEFINITION(CAMERA3_TEMPLATE_COUNT); |
| |
| #define CHECK_BUFFER_STATUS_DEFINITION(status) \ |
| CHECK_MOJOM_DEFINITION(status, Camera3BufferStatus) |
| |
| CHECK_BUFFER_STATUS_DEFINITION(CAMERA3_BUFFER_STATUS_OK); |
| CHECK_BUFFER_STATUS_DEFINITION(CAMERA3_BUFFER_STATUS_ERROR); |
| |
| #define CHECK_MSG_TYPE_DEFINITION(type) \ |
| CHECK_MOJOM_DEFINITION(type, Camera3MsgType) |
| |
| CHECK_MSG_TYPE_DEFINITION(CAMERA3_MSG_ERROR); |
| CHECK_MSG_TYPE_DEFINITION(CAMERA3_MSG_SHUTTER); |
| CHECK_MSG_TYPE_DEFINITION(CAMERA3_NUM_MESSAGES); |
| |
| #define CHECK_ERROR_MSG_CODE_DEFINITION(code) \ |
| CHECK_MOJOM_DEFINITION(code, Camera3ErrorMsgCode) |
| |
| CHECK_ERROR_MSG_CODE_DEFINITION(CAMERA3_MSG_ERROR_DEVICE); |
| CHECK_ERROR_MSG_CODE_DEFINITION(CAMERA3_MSG_ERROR_REQUEST); |
| CHECK_ERROR_MSG_CODE_DEFINITION(CAMERA3_MSG_ERROR_RESULT); |
| CHECK_ERROR_MSG_CODE_DEFINITION(CAMERA3_MSG_ERROR_BUFFER); |
| CHECK_ERROR_MSG_CODE_DEFINITION(CAMERA3_MSG_NUM_ERRORS); |
| |
| #define CHECK_DEVICE_STATUS_DEFINITION(status) \ |
| CHECK_MOJOM_DEFINITION(status, CameraDeviceStatus) |
| |
| CHECK_DEVICE_STATUS_DEFINITION(CAMERA_DEVICE_STATUS_NOT_PRESENT); |
| CHECK_DEVICE_STATUS_DEFINITION(CAMERA_DEVICE_STATUS_PRESENT); |
| CHECK_DEVICE_STATUS_DEFINITION(CAMERA_DEVICE_STATUS_ENUMERATING); |
| |
| #define CHECK_TORCH_MODE_STATUS_DEFINITION(status) \ |
| CHECK_MOJOM_DEFINITION(status, TorchModeStatus) |
| |
| CHECK_TORCH_MODE_STATUS_DEFINITION(TORCH_MODE_STATUS_NOT_AVAILABLE); |
| CHECK_TORCH_MODE_STATUS_DEFINITION(TORCH_MODE_STATUS_AVAILABLE_OFF); |
| CHECK_TORCH_MODE_STATUS_DEFINITION(TORCH_MODE_STATUS_AVAILABLE_ON); |
| |
| } // namespace |
| |
| } // namespace cros |