1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef CAMERA_PRODUCT_H 10 #define CAMERA_PRODUCT_H 11 12 #include <utils/hdf_base.h> 13 14 #define CAMERA_MAX_CMD_ID 23 15 16 enum CameraDeviceType { 17 SENSOR_TYPE, 18 ISP_TYPE, 19 VCM_TYPE, 20 LENS_TYPE, 21 FLASH_TYPE, 22 UVC_TYPE, 23 STREAM_TYPE, 24 }; 25 26 enum CameraQueryMemeryFlags { 27 RELEASE_FLAG, 28 ALLOC_FLAG, 29 }; 30 31 typedef enum { 32 CAMERA_UVC_EVENT, 33 } CameraReceiveEventType; 34 35 enum CameraMethodCmd { 36 CMD_OPEN_CAMERA, 37 CMD_CLOSE_CAMERA, 38 CMD_POWER_UP, 39 CMD_POWER_DOWN, 40 CMD_QUERY_CONFIG, 41 CMD_GET_CONFIG, 42 CMD_SET_CONFIG, 43 CMD_GET_FMT, 44 CMD_SET_FMT, 45 CMD_GET_CROP, 46 CMD_SET_CROP, 47 CMD_GET_FPS, 48 CMD_SET_FPS, 49 CMD_ENUM_FMT, 50 CMD_ENUM_DEVICES, 51 CMD_GET_ABILITY, 52 CMD_QUEUE_INIT, 53 CMD_REQ_MEMORY, 54 CMD_QUERY_MEMORY, 55 CMD_STREAM_QUEUE, 56 CMD_STREAM_DEQUEUE, 57 CMD_STREAM_ON, 58 CMD_STREAM_OFF, 59 }; 60 61 enum CameraPixFmt { 62 CAMERA_PIX_FMT_UNDIFINED = 0, 63 64 CAMERA_PIX_FMT_YUV420 = 1, 65 CAMERA_PIX_FMT_YUV422 = 2, 66 CAMERA_PIX_FMT_YUV444 = 3, 67 68 CAMERA_PIX_FMT_RGB565 = 100, 69 CAMERA_PIX_FMT_RGB444 = 101, 70 CAMERA_PIX_FMT_RGB555 = 102, 71 CAMERA_PIX_FMT_RGB32 = 103, 72 73 CAMERA_PIX_FMT_SRGGB8 = 200, 74 CAMERA_PIX_FMT_SRGGB10 = 201, 75 CAMERA_PIX_FMT_SRGGB12 = 202, 76 CAMERA_PIX_FMT_SBGGR8 = 203, 77 CAMERA_PIX_FMT_SBGGR10 = 204, 78 CAMERA_PIX_FMT_SBGGR12 = 205, 79 80 CAMERA_PIX_FMT_JPEG = 300, 81 CAMERA_PIX_FMT_MJPEG = 301, 82 CAMERA_PIX_FMT_MPEG = 302, 83 CAMERA_PIX_FMT_MPEG1 = 303, 84 CAMERA_PIX_FMT_MPEG2 = 304, 85 CAMERA_PIX_FMT_MPEG4 = 305, 86 87 CAMERA_PIX_FMT_H264 = 400, 88 CAMERA_PIX_FMT_H264_NO_SC = 401, 89 CAMERA_PIX_FMT_H264_MVC = 402, 90 }; 91 92 enum CameraCmdEnumTypeFmt { 93 CAMERA_CMD_ENUM_FMT, 94 CAMERA_CMD_ENUM_FRAMESIZES, 95 CAMERA_CMD_ENUM_FRAMEINTERVALS, 96 }; 97 98 enum CameraPermissionId { 99 CAMERA_MASTER = 1, 100 CAMERA_SLAVE0, 101 CAMERA_SLAVE1, 102 CAMERA_SLAVE2, 103 CAMERA_SLAVE3, 104 CAMERA_SLAVE4, 105 CAMERA_SLAVE5, 106 CAMERA_SLAVE6, 107 CAMERA_SLAVE7, 108 CAMERA_SLAVE8, 109 }; 110 111 enum CmdGetConfigValue { 112 CAMERA_CMD_GET_EXPOSURE, /* SENSOR exposure time query */ 113 CAMERA_CMD_GET_WHITE_BALANCE_MODE, /* White balance mode query */ 114 CAMERA_CMD_GET_WHITE_BALANCE, /* White balance value query */ 115 116 CAMERA_CMD_GET_BRIGHTNESS, /* Brightness query */ 117 CAMERA_CMD_GET_CONTRAST, /* Contrast query */ 118 CAMERA_CMD_GET_SATURATION, /* Saturation query */ 119 CAMERA_CMD_GET_HUE, /* Hue query */ 120 CAMERA_CMD_GET_SHARPNESS, /* Sharpness query */ 121 CAMERA_CMD_GET_GAIN, /* Gain query */ 122 CAMERA_CMD_GET_GAMMA, /* Gamma query */ 123 CAMERA_CMD_GET_HFLIP, /* Horizontal mirror query */ 124 CAMERA_CMD_GET_VFLIP, /* Vertical mirror query */ 125 126 CAMERA_CMD_GET_FOCUS_MODE, /* Focus mode query */ 127 CAMERA_CMD_GET_FOCUS_ABSOLUTE, /* Query of absolute value of focusing position */ 128 CAMERA_CMD_GET_ZOOM_ABSOLUTE, /* Zoom position absolute value query */ 129 CAMERA_CMD_GET_ZOOM_CONTINUOUS, /* Continuous zoom query */ 130 CAMERA_CMD_GET_IRIS_ABSOLUTE, /* Aperture absolute value query */ 131 CAMERA_CMD_GET_IRIS_RELATIVE, /* Aperture relative value query */ 132 133 CAMERA_CMD_GET_FLASH_FAULT, /* Flash error query */ 134 CAMERA_CMD_GET_FLASH_READY, /* Flash ready query */ 135 }; 136 137 enum CmdSetConfigValue { 138 CAMERA_CMD_SET_EXPOSURE, /* Sensor exposure time setting */ 139 CAMERA_CMD_SET_WHITE_BALANCE_MODE, /* White balance mode setting */ 140 CAMERA_CMD_SET_WHITE_BALANCE, /* White balance value setting */ 141 142 CAMERA_CMD_SET_BRIGHTNESS, /* Brightness settings */ 143 CAMERA_CMD_SET_CONTRAST, /* Contrast settings */ 144 CAMERA_CMD_SET_SATURATION, /* Saturation settings */ 145 CAMERA_CMD_SET_HUE, /* Hue settings */ 146 CAMERA_CMD_SET_SHARPNESS, /* Sharpness settings */ 147 148 CAMERA_CMD_SET_GAIN, /* Gain value setting */ 149 CAMERA_CMD_SET_GAMMA, /* Gamma value setting */ 150 CAMERA_CMD_SET_HFLIP, /* Horizontal mirror settings */ 151 CAMERA_CMD_SET_VFLIP, /* Vertical mirror settings */ 152 153 CAMERA_CMD_SET_FOCUS_MODE, /* Focus mode setting */ 154 CAMERA_CMD_SET_FOCUS_ABSOLUTE, /* Focus position absolute value setting */ 155 CAMERA_CMD_SET_FOCUS_RELATIVE, /* Setting of relative value of focusing position */ 156 CAMERA_CMD_SET_ZOOM_ABSOLUTE, /* Zoom position absolute value setting */ 157 CAMERA_CMD_SET_ZOOM_RELATIVE, /* Relative value setting of zoom position */ 158 CAMERA_CMD_SET_ZOOM_CONTINUOUS, /* Continuous zoom setting */ 159 CAMERA_CMD_SET_IRIS_ABSOLUTE, /* Aperture absolute value setting */ 160 CAMERA_CMD_SET_IRIS_RELATIVE, /* Aperture relative value setting */ 161 162 CAMERA_CMD_SET_FLASH_STROBE, /* Flash settings setting */ 163 CAMERA_CMD_SET_FLASH_INTENSITY, /* Flash intensity setting */ 164 }; 165 166 enum CameraExposureAutoType { 167 CAMERA_EXPOSURE_AUTO = 0, 168 CAMERA_EXPOSURE_MANUAL, 169 CAMERA_EXPOSURE_SHUTTER_PRIORITY, 170 CAMERA_EXPOSURE_APERTURE_PRIORITY, 171 }; 172 173 enum CameraWhitleBalanceAutoType { 174 CAMERA_WHITE_BALANCE_AUTO = 0, 175 CAMERA_WHITE_BALANCE_MANUAL, 176 }; 177 178 enum CameraFocusAutoType { 179 CAMERA_FOCUS_AUTO = 0, 180 CAMERA_FOCUS_MANUAL, 181 }; 182 183 enum CameraFlashMode { 184 CAMERA_FLASH_STROBE = 0, 185 CAMERA_FLASH_STROBE_STOP, 186 }; 187 188 enum CameraIrisAbsolute { 189 CAMERA_IRIS_F1 = 0, 190 CAMERA_IRIS_F1P2, 191 CAMERA_IRIS_F1P4, 192 CAMERA_IRIS_F2, 193 CAMERA_IRIS_F2P8, 194 CAMERA_IRIS_F4, 195 CAMERA_IRIS_F5P6, 196 CAMERA_IRIS_F8, 197 CAMERA_IRIS_F11, 198 CAMERA_IRIS_F16, 199 CAMERA_IRIS_F22, 200 CAMERA_IRIS_F32, 201 CAMERA_IRIS_F44, 202 CAMERA_IRIS_F64, 203 }; 204 205 enum CameraZoomContinuous { 206 CAMERA_ZOOM_WIDE = 0, 207 CAMERA_ZOOM_TELE, 208 CAMERA_ZOOM_STOP, 209 }; 210 211 struct UserCameraBuffer { 212 uint32_t id; 213 uint32_t flags; 214 uint32_t field; 215 uint64_t timeStamp; 216 uint32_t sequence; 217 uint32_t memType; 218 struct UserCameraPlane *planes; 219 uint32_t planeCount; 220 }; 221 222 struct UserCameraPlane { 223 uint32_t bytesUsed; 224 uint32_t length; 225 union { 226 uint32_t offset; 227 uint64_t userPtr; 228 uint32_t fd; 229 } memory; 230 unsigned long vaddr; 231 uint32_t dataOffset; 232 }; 233 234 struct UserCameraReq { 235 uint32_t count; 236 uint32_t memType; 237 uint32_t capabilities; 238 }; 239 240 enum CameraMemType { 241 MEMTYPE_UNKNOWN = 0, 242 MEMTYPE_MMAP = (1 << 0), 243 MEMTYPE_USERPTR = (1 << 1), 244 MEMTYPE_DMABUF = (1 << 2), 245 }; 246 247 /* UserCameraBuffer flags */ 248 enum UserBufferFlags { 249 USER_BUFFER_QUEUED = (1 << 0), 250 USER_BUFFER_DONE = (1 << 1), 251 USER_BUFFER_ERROR = (1 << 2), 252 USER_BUFFER_LAST = (1 << 3), 253 USER_BUFFER_BLOCKING = (1 << 4), 254 }; 255 256 #endif // CAMERA_PRODUCT_H