blob: d2e976df3639619b09e3be9f95979af63ccf9e4e [file] [log] [blame]
/*
* 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