1 /* 2 Copyright (c) 2012, Broadcom Europe Ltd 3 All rights reserved. 4 5 Redistribution and use in source and binary forms, with or without 6 modification, are permitted provided that the following conditions are met: 7 * Redistributions of source code must retain the above copyright 8 notice, this list of conditions and the following disclaimer. 9 * Redistributions in binary form must reproduce the above copyright 10 notice, this list of conditions and the following disclaimer in the 11 documentation and/or other materials provided with the distribution. 12 * Neither the name of the copyright holder nor the 13 names of its contributors may be used to endorse or promote products 14 derived from this software without specific prior written permission. 15 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 /*============================================================================= 29 Copyright (c) 2011 Broadcom Europe Limited. 30 All rights reserved. 31 =============================================================================*/ 32 /** \file 33 * Multi-Media Abstraction Layer - Definition of some standard parameters. 34 */ 35 36 #ifndef MMAL_PARAMETERS_CAMERA_H 37 #define MMAL_PARAMETERS_CAMERA_H 38 39 #include "mmal_parameters_common.h" 40 41 /************************************************* 42 * ALWAYS ADD NEW ENUMS AT THE END OF THIS LIST! * 43 ************************************************/ 44 45 /** Camera-specific MMAL parameter IDs. 46 * @ingroup MMAL_PARAMETER_IDS 47 */ 48 enum { 49 /* 0 */ 50 MMAL_PARAMETER_THUMBNAIL_CONFIGURATION /**< Takes a @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */ 51 = MMAL_PARAMETER_GROUP_CAMERA, 52 MMAL_PARAMETER_CAPTURE_QUALITY, /**< Unused? */ 53 MMAL_PARAMETER_ROTATION, /**< Takes a @ref MMAL_PARAMETER_INT32_T */ 54 MMAL_PARAMETER_EXIF_DISABLE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 55 MMAL_PARAMETER_EXIF, /**< Takes a @ref MMAL_PARAMETER_EXIF_T */ 56 MMAL_PARAMETER_AWB_MODE, /**< Takes a @ref MMAL_PARAM_AWBMODE_T */ 57 MMAL_PARAMETER_IMAGE_EFFECT, /**< Takes a @ref MMAL_PARAMETER_IMAGEFX_T */ 58 MMAL_PARAMETER_COLOUR_EFFECT, /**< Takes a @ref MMAL_PARAMETER_COLOURFX_T */ 59 MMAL_PARAMETER_FLICKER_AVOID, /**< Takes a @ref MMAL_PARAMETER_FLICKERAVOID_T */ 60 MMAL_PARAMETER_FLASH, /**< Takes a @ref MMAL_PARAMETER_FLASH_T */ 61 MMAL_PARAMETER_REDEYE, /**< Takes a @ref MMAL_PARAMETER_REDEYE_T */ 62 MMAL_PARAMETER_FOCUS, /**< Takes a @ref MMAL_PARAMETER_FOCUS_T */ 63 MMAL_PARAMETER_FOCAL_LENGTHS, /**< Unused? */ 64 MMAL_PARAMETER_EXPOSURE_COMP, /**< Takes a @ref MMAL_PARAMETER_INT32_T or MMAL_PARAMETER_RATIONAL_T */ 65 MMAL_PARAMETER_ZOOM, /**< Takes a @ref MMAL_PARAMETER_SCALEFACTOR_T */ 66 MMAL_PARAMETER_MIRROR, /**< Takes a @ref MMAL_PARAMETER_MIRROR_T */ 67 68 /* 0x10 */ 69 MMAL_PARAMETER_CAMERA_NUM, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 70 MMAL_PARAMETER_CAPTURE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 71 MMAL_PARAMETER_EXPOSURE_MODE, /**< Takes a @ref MMAL_PARAMETER_EXPOSUREMODE_T */ 72 MMAL_PARAMETER_EXP_METERING_MODE, /**< Takes a @ref MMAL_PARAMETER_EXPOSUREMETERINGMODE_T */ 73 MMAL_PARAMETER_FOCUS_STATUS, /**< Takes a @ref MMAL_PARAMETER_FOCUS_STATUS_T */ 74 MMAL_PARAMETER_CAMERA_CONFIG, /**< Takes a @ref MMAL_PARAMETER_CAMERA_CONFIG_T */ 75 MMAL_PARAMETER_CAPTURE_STATUS, /**< Takes a @ref MMAL_PARAMETER_CAPTURE_STATUS_T */ 76 MMAL_PARAMETER_FACE_TRACK, /**< Takes a @ref MMAL_PARAMETER_FACE_TRACK_T */ 77 MMAL_PARAMETER_DRAW_BOX_FACES_AND_FOCUS, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 78 MMAL_PARAMETER_JPEG_Q_FACTOR, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 79 MMAL_PARAMETER_FRAME_RATE, /**< Takes a @ref MMAL_PARAMETER_FRAME_RATE_T */ 80 MMAL_PARAMETER_USE_STC, /**< Takes a @ref MMAL_PARAMETER_CAMERA_STC_MODE_T */ 81 MMAL_PARAMETER_CAMERA_INFO, /**< Takes a @ref MMAL_PARAMETER_CAMERA_INFO_T */ 82 MMAL_PARAMETER_VIDEO_STABILISATION, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 83 MMAL_PARAMETER_FACE_TRACK_RESULTS, /**< Takes a @ref MMAL_PARAMETER_FACE_TRACK_RESULTS_T */ 84 MMAL_PARAMETER_ENABLE_RAW_CAPTURE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 85 86 /* 0x20 */ 87 MMAL_PARAMETER_DPF_FILE, /**< Takes a @ref MMAL_PARAMETER_URI_T */ 88 MMAL_PARAMETER_ENABLE_DPF_FILE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 89 MMAL_PARAMETER_DPF_FAIL_IS_FATAL, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 90 MMAL_PARAMETER_CAPTURE_MODE, /**< Takes a @ref MMAL_PARAMETER_CAPTUREMODE_T */ 91 MMAL_PARAMETER_FOCUS_REGIONS, /**< Takes a @ref MMAL_PARAMETER_FOCUS_REGIONS_T */ 92 MMAL_PARAMETER_INPUT_CROP, /**< Takes a @ref MMAL_PARAMETER_INPUT_CROP_T */ 93 MMAL_PARAMETER_SENSOR_INFORMATION, /**< Takes a @ref MMAL_PARAMETER_SENSOR_INFORMATION_T */ 94 MMAL_PARAMETER_FLASH_SELECT, /**< Takes a @ref MMAL_PARAMETER_FLASH_SELECT_T */ 95 MMAL_PARAMETER_FIELD_OF_VIEW, /**< Takes a @ref MMAL_PARAMETER_FIELD_OF_VIEW_T */ 96 MMAL_PARAMETER_HIGH_DYNAMIC_RANGE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 97 MMAL_PARAMETER_DYNAMIC_RANGE_COMPRESSION, /**< Takes a @ref MMAL_PARAMETER_DRC_T */ 98 MMAL_PARAMETER_ALGORITHM_CONTROL, /**< Takes a @ref MMAL_PARAMETER_ALGORITHM_CONTROL_T */ 99 MMAL_PARAMETER_SHARPNESS, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 100 MMAL_PARAMETER_CONTRAST, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 101 MMAL_PARAMETER_BRIGHTNESS, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 102 MMAL_PARAMETER_SATURATION, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 103 104 /* 0x30 */ 105 MMAL_PARAMETER_ISO, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 106 MMAL_PARAMETER_ANTISHAKE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 107 MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, /**< Takes a @ref MMAL_PARAMETER_IMAGEFX_PARAMETERS_T */ 108 MMAL_PARAMETER_CAMERA_BURST_CAPTURE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 109 MMAL_PARAMETER_CAMERA_MIN_ISO, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 110 MMAL_PARAMETER_CAMERA_USE_CASE, /**< Takes a @ref MMAL_PARAMETER_CAMERA_USE_CASE_T */ 111 MMAL_PARAMETER_CAPTURE_STATS_PASS, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 112 MMAL_PARAMETER_CAMERA_CUSTOM_SENSOR_CONFIG, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 113 MMAL_PARAMETER_ENABLE_REGISTER_FILE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 114 MMAL_PARAMETER_REGISTER_FAIL_IS_FATAL, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 115 MMAL_PARAMETER_CONFIGFILE_REGISTERS, /**< Takes a @ref MMAL_PARAMETER_CONFIGFILE_T */ 116 MMAL_PARAMETER_CONFIGFILE_CHUNK_REGISTERS,/**< Takes a @ref MMAL_PARAMETER_CONFIGFILE_CHUNK_T */ 117 MMAL_PARAMETER_JPEG_ATTACH_LOG, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 118 MMAL_PARAMETER_ZERO_SHUTTER_LAG, /**< Takes a @ref MMAL_PARAMETER_ZEROSHUTTERLAG_T */ 119 MMAL_PARAMETER_FPS_RANGE, /**< Takes a @ref MMAL_PARAMETER_FPS_RANGE_T */ 120 MMAL_PARAMETER_CAPTURE_EXPOSURE_COMP, /**< Takes a @ref MMAL_PARAMETER_INT32_T */ 121 122 /* 0x40 */ 123 MMAL_PARAMETER_SW_SHARPEN_DISABLE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 124 MMAL_PARAMETER_FLASH_REQUIRED, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 125 MMAL_PARAMETER_SW_SATURATION_DISABLE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 126 MMAL_PARAMETER_SHUTTER_SPEED, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 127 MMAL_PARAMETER_CUSTOM_AWB_GAINS, /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */ 128 MMAL_PARAMETER_CAMERA_SETTINGS, /**< Takes a @ref MMAL_PARAMETER_CAMERA_SETTINGS_T */ 129 MMAL_PARAMETER_PRIVACY_INDICATOR, /**< Takes a @ref MMAL_PARAMETER_PRIVACY_INDICATOR_T */ 130 MMAL_PARAMETER_VIDEO_DENOISE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 131 MMAL_PARAMETER_STILLS_DENOISE, /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */ 132 MMAL_PARAMETER_ANNOTATE, /**< Takes a @ref MMAL_PARAMETER_CAMERA_ANNOTATE_T */ 133 MMAL_PARAMETER_STEREOSCOPIC_MODE, /**< Takes a @ref MMAL_PARAMETER_STEREOSCOPIC_MODE_T */ 134 MMAL_PARAMETER_CAMERA_INTERFACE, /**< Takes a @ref MMAL_PARAMETER_CAMERA_INTERFACE_T */ 135 MMAL_PARAMETER_CAMERA_CLOCKING_MODE, /**< Takes a @ref MMAL_PARAMETER_CAMERA_CLOCKING_MODE_T */ 136 MMAL_PARAMETER_CAMERA_RX_CONFIG, /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_CONFIG_T */ 137 MMAL_PARAMETER_CAMERA_RX_TIMING, /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_TIMING_T */ 138 MMAL_PARAMETER_DPF_CONFIG, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 139 140 /* 0x50 */ 141 MMAL_PARAMETER_JPEG_RESTART_INTERVAL, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 142 MMAL_PARAMETER_CAMERA_ISP_BLOCK_OVERRIDE, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 143 MMAL_PARAMETER_LENS_SHADING_OVERRIDE, /**< Takes a @ref MMAL_PARAMETER_LENS_SHADING_T */ 144 MMAL_PARAMETER_BLACK_LEVEL, /**< Takes a @ref MMAL_PARAMETER_UINT32_T or @ref MMAL_PARAMETER_BLACK_LEVEL_T */ 145 MMAL_PARAMETER_RESIZE_PARAMS, /**< Takes a @ref MMAL_PARAMETER_RESIZE_T */ 146 MMAL_PARAMETER_CROP, /**< Takes a @ref MMAL_PARAMETER_CROP_T */ 147 MMAL_PARAMETER_OUTPUT_SHIFT, /**< Takes a @ref MMAL_PARAMETER_INT32_T */ 148 MMAL_PARAMETER_CCM_SHIFT, /**< Takes a @ref MMAL_PARAMETER_INT32_T */ 149 MMAL_PARAMETER_CUSTOM_CCM, /**< Takes a @ref MMAL_PARAMETER_CUSTOM_CCM_T */ 150 MMAL_PARAMETER_ANALOG_GAIN, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 151 MMAL_PARAMETER_DIGITAL_GAIN, /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */ 152 MMAL_PARAMETER_DENOISE, /**< Takes a @ref MMAL_PARAMETER_DENOISE_T */ 153 MMAL_PARAMETER_SHARPEN, /**< Takes a @ref MMAL_PARAMETER_SHARPEN_T */ 154 MMAL_PARAMETER_GREEN_EQ, /**< Takes a @ref MMAL_PARAMETER_GREEN_EQ_T */ 155 MMAL_PARAMETER_DPC, /**< Tales a @ref MMAP_PARAMETER_DPC_T */ 156 MMAL_PARAMETER_GAMMA, /**< Tales a @ref MMAP_PARAMETER_GAMMA_T */ 157 MMAL_PARAMETER_CDN, /**< Takes a @ref MMAL_PARAMETER_CDN_T */ 158 }; 159 160 /** Thumbnail configuration parameter type */ 161 typedef struct MMAL_PARAMETER_THUMBNAIL_CONFIG_T 162 { 163 MMAL_PARAMETER_HEADER_T hdr; 164 165 uint32_t enable; /**< Enable generation of thumbnails during still capture */ 166 uint32_t width; /**< Desired width of the thumbnail */ 167 uint32_t height; /**< Desired height of the thumbnail */ 168 uint32_t quality; /**< Desired compression quality of the thumbnail */ 169 } MMAL_PARAMETER_THUMBNAIL_CONFIG_T; 170 171 /** EXIF parameter type. */ 172 typedef struct MMAL_PARAMETER_EXIF_T 173 { 174 MMAL_PARAMETER_HEADER_T hdr; 175 176 uint32_t keylen; /**< If 0, assume key is terminated by '=', otherwise length of key and treat data as binary */ 177 uint32_t value_offset; /**< Offset within data buffer of the start of the value. If 0, look for a "key=value" string */ 178 uint32_t valuelen; /**< If 0, assume value is null-terminated, otherwise length of value and treat data as binary */ 179 uint8_t data[1]; /**< EXIF key/value string. Variable length */ 180 } MMAL_PARAMETER_EXIF_T; 181 182 /** Exposure modes. */ 183 typedef enum 184 { 185 MMAL_PARAM_EXPOSUREMODE_OFF, 186 MMAL_PARAM_EXPOSUREMODE_AUTO, 187 MMAL_PARAM_EXPOSUREMODE_NIGHT, 188 MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW, 189 MMAL_PARAM_EXPOSUREMODE_BACKLIGHT, 190 MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT, 191 MMAL_PARAM_EXPOSUREMODE_SPORTS, 192 MMAL_PARAM_EXPOSUREMODE_SNOW, 193 MMAL_PARAM_EXPOSUREMODE_BEACH, 194 MMAL_PARAM_EXPOSUREMODE_VERYLONG, 195 MMAL_PARAM_EXPOSUREMODE_FIXEDFPS, 196 MMAL_PARAM_EXPOSUREMODE_ANTISHAKE, 197 MMAL_PARAM_EXPOSUREMODE_FIREWORKS, 198 MMAL_PARAM_EXPOSUREMODE_MAX = 0x7fffffff 199 } MMAL_PARAM_EXPOSUREMODE_T; 200 201 typedef struct MMAL_PARAMETER_EXPOSUREMODE_T 202 { 203 MMAL_PARAMETER_HEADER_T hdr; 204 205 MMAL_PARAM_EXPOSUREMODE_T value; /**< exposure mode */ 206 } MMAL_PARAMETER_EXPOSUREMODE_T; 207 208 typedef enum 209 { 210 MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE, 211 MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT, 212 MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT, 213 MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX, 214 MMAL_PARAM_EXPOSUREMETERINGMODE_MAX = 0x7fffffff 215 } MMAL_PARAM_EXPOSUREMETERINGMODE_T; 216 217 typedef struct MMAL_PARAMETER_EXPOSUREMETERINGMODE_T 218 { 219 MMAL_PARAMETER_HEADER_T hdr; 220 221 MMAL_PARAM_EXPOSUREMETERINGMODE_T value; /**< metering mode */ 222 } MMAL_PARAMETER_EXPOSUREMETERINGMODE_T; 223 224 /** AWB parameter modes. */ 225 typedef enum MMAL_PARAM_AWBMODE_T 226 { 227 MMAL_PARAM_AWBMODE_OFF, 228 MMAL_PARAM_AWBMODE_AUTO, 229 MMAL_PARAM_AWBMODE_SUNLIGHT, 230 MMAL_PARAM_AWBMODE_CLOUDY, 231 MMAL_PARAM_AWBMODE_SHADE, 232 MMAL_PARAM_AWBMODE_TUNGSTEN, 233 MMAL_PARAM_AWBMODE_FLUORESCENT, 234 MMAL_PARAM_AWBMODE_INCANDESCENT, 235 MMAL_PARAM_AWBMODE_FLASH, 236 MMAL_PARAM_AWBMODE_HORIZON, 237 MMAL_PARAM_AWBMODE_GREYWORLD, 238 MMAL_PARAM_AWBMODE_MAX = 0x7fffffff 239 } MMAL_PARAM_AWBMODE_T; 240 241 /** AWB parameter type. */ 242 typedef struct MMAL_PARAMETER_AWBMODE_T 243 { 244 MMAL_PARAMETER_HEADER_T hdr; 245 246 MMAL_PARAM_AWBMODE_T value; /**< AWB mode */ 247 } MMAL_PARAMETER_AWBMODE_T; 248 249 /** Image effect */ 250 typedef enum MMAL_PARAM_IMAGEFX_T 251 { 252 MMAL_PARAM_IMAGEFX_NONE, 253 MMAL_PARAM_IMAGEFX_NEGATIVE, 254 MMAL_PARAM_IMAGEFX_SOLARIZE, 255 MMAL_PARAM_IMAGEFX_POSTERIZE, 256 MMAL_PARAM_IMAGEFX_WHITEBOARD, 257 MMAL_PARAM_IMAGEFX_BLACKBOARD, 258 MMAL_PARAM_IMAGEFX_SKETCH, 259 MMAL_PARAM_IMAGEFX_DENOISE, 260 MMAL_PARAM_IMAGEFX_EMBOSS, 261 MMAL_PARAM_IMAGEFX_OILPAINT, 262 MMAL_PARAM_IMAGEFX_HATCH, 263 MMAL_PARAM_IMAGEFX_GPEN, 264 MMAL_PARAM_IMAGEFX_PASTEL, 265 MMAL_PARAM_IMAGEFX_WATERCOLOUR, 266 MMAL_PARAM_IMAGEFX_FILM, 267 MMAL_PARAM_IMAGEFX_BLUR, 268 MMAL_PARAM_IMAGEFX_SATURATION, 269 MMAL_PARAM_IMAGEFX_COLOURSWAP, 270 MMAL_PARAM_IMAGEFX_WASHEDOUT, 271 MMAL_PARAM_IMAGEFX_POSTERISE, 272 MMAL_PARAM_IMAGEFX_COLOURPOINT, 273 MMAL_PARAM_IMAGEFX_COLOURBALANCE, 274 MMAL_PARAM_IMAGEFX_CARTOON, 275 MMAL_PARAM_IMAGEFX_DEINTERLACE_DOUBLE, 276 MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV, 277 MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST, 278 MMAL_PARAM_IMAGEFX_MAX = 0x7fffffff 279 } MMAL_PARAM_IMAGEFX_T; 280 281 typedef struct MMAL_PARAMETER_IMAGEFX_T 282 { 283 MMAL_PARAMETER_HEADER_T hdr; 284 285 MMAL_PARAM_IMAGEFX_T value; /**< Image effect mode */ 286 } MMAL_PARAMETER_IMAGEFX_T; 287 288 #define MMAL_MAX_IMAGEFX_PARAMETERS 6 /* Image effects library currently uses a maximum of 5 parameters per effect */ 289 290 typedef struct MMAL_PARAMETER_IMAGEFX_PARAMETERS_T 291 { 292 MMAL_PARAMETER_HEADER_T hdr; 293 294 MMAL_PARAM_IMAGEFX_T effect; /**< Image effect mode */ 295 uint32_t num_effect_params; /**< Number of used elements in */ 296 uint32_t effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS]; /**< Array of parameters */ 297 } MMAL_PARAMETER_IMAGEFX_PARAMETERS_T; 298 299 /** Colour effect parameter type*/ 300 typedef struct MMAL_PARAMETER_COLOURFX_T 301 { 302 MMAL_PARAMETER_HEADER_T hdr; 303 304 int32_t enable; 305 uint32_t u; 306 uint32_t v; 307 } MMAL_PARAMETER_COLOURFX_T; 308 309 typedef enum MMAL_CAMERA_STC_MODE_T 310 { 311 MMAL_PARAM_STC_MODE_OFF, /**< Frames do not have STCs, as needed in OpenMAX/IL */ 312 MMAL_PARAM_STC_MODE_RAW, /**< Use raw clock STC, needed for true pause/resume support */ 313 MMAL_PARAM_STC_MODE_COOKED, /**< Start the STC from the start of capture, only for quick demo code */ 314 MMAL_PARAM_STC_MODE_MAX = 0x7fffffff 315 } MMAL_CAMERA_STC_MODE_T; 316 317 typedef struct MMAL_PARAMETER_CAMERA_STC_MODE_T 318 { 319 MMAL_PARAMETER_HEADER_T hdr; 320 MMAL_CAMERA_STC_MODE_T value; 321 } MMAL_PARAMETER_CAMERA_STC_MODE_T; 322 323 typedef enum MMAL_PARAM_FLICKERAVOID_T 324 { 325 MMAL_PARAM_FLICKERAVOID_OFF, 326 MMAL_PARAM_FLICKERAVOID_AUTO, 327 MMAL_PARAM_FLICKERAVOID_50HZ, 328 MMAL_PARAM_FLICKERAVOID_60HZ, 329 MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF 330 } MMAL_PARAM_FLICKERAVOID_T; 331 332 typedef struct MMAL_PARAMETER_FLICKERAVOID_T 333 { 334 MMAL_PARAMETER_HEADER_T hdr; 335 336 MMAL_PARAM_FLICKERAVOID_T value; /**< Flicker avoidance mode */ 337 } MMAL_PARAMETER_FLICKERAVOID_T; 338 339 typedef enum MMAL_PARAM_FLASH_T 340 { 341 MMAL_PARAM_FLASH_OFF, 342 MMAL_PARAM_FLASH_AUTO, 343 MMAL_PARAM_FLASH_ON, 344 MMAL_PARAM_FLASH_REDEYE, 345 MMAL_PARAM_FLASH_FILLIN, 346 MMAL_PARAM_FLASH_TORCH, 347 MMAL_PARAM_FLASH_MAX = 0x7FFFFFFF 348 } MMAL_PARAM_FLASH_T; 349 350 typedef struct MMAL_PARAMETER_FLASH_T 351 { 352 MMAL_PARAMETER_HEADER_T hdr; 353 354 MMAL_PARAM_FLASH_T value; /**< Flash mode */ 355 } MMAL_PARAMETER_FLASH_T; 356 357 typedef enum MMAL_PARAM_REDEYE_T 358 { 359 MMAL_PARAM_REDEYE_OFF, 360 MMAL_PARAM_REDEYE_ON, 361 MMAL_PARAM_REDEYE_SIMPLE, 362 MMAL_PARAM_REDEYE_MAX = 0x7FFFFFFF 363 } MMAL_PARAM_REDEYE_T; 364 365 typedef struct MMAL_PARAMETER_REDEYE_T 366 { 367 MMAL_PARAMETER_HEADER_T hdr; 368 369 MMAL_PARAM_REDEYE_T value; /**< Red eye reduction mode */ 370 } MMAL_PARAMETER_REDEYE_T; 371 372 typedef enum MMAL_PARAM_FOCUS_T 373 { 374 MMAL_PARAM_FOCUS_AUTO, 375 MMAL_PARAM_FOCUS_AUTO_NEAR, 376 MMAL_PARAM_FOCUS_AUTO_MACRO, 377 MMAL_PARAM_FOCUS_CAF, 378 MMAL_PARAM_FOCUS_CAF_NEAR, 379 MMAL_PARAM_FOCUS_FIXED_INFINITY, 380 MMAL_PARAM_FOCUS_FIXED_HYPERFOCAL, 381 MMAL_PARAM_FOCUS_FIXED_NEAR, 382 MMAL_PARAM_FOCUS_FIXED_MACRO, 383 MMAL_PARAM_FOCUS_EDOF, 384 MMAL_PARAM_FOCUS_CAF_MACRO, 385 MMAL_PARAM_FOCUS_CAF_FAST, 386 MMAL_PARAM_FOCUS_CAF_NEAR_FAST, 387 MMAL_PARAM_FOCUS_CAF_MACRO_FAST, 388 MMAL_PARAM_FOCUS_FIXED_CURRENT, 389 MMAL_PARAM_FOCUS_MAX = 0x7FFFFFFF 390 } MMAL_PARAM_FOCUS_T; 391 392 typedef struct MMAL_PARAMETER_FOCUS_T 393 { 394 MMAL_PARAMETER_HEADER_T hdr; 395 396 MMAL_PARAM_FOCUS_T value; /**< Focus mode */ 397 } MMAL_PARAMETER_FOCUS_T; 398 399 typedef enum MMAL_PARAM_CAPTURE_STATUS_T 400 { 401 MMAL_PARAM_CAPTURE_STATUS_NOT_CAPTURING, 402 MMAL_PARAM_CAPTURE_STATUS_CAPTURE_STARTED, 403 MMAL_PARAM_CAPTURE_STATUS_CAPTURE_ENDED, 404 405 MMAL_PARAM_CAPTURE_STATUS_MAX = 0x7FFFFFFF 406 } MMAL_PARAM_CAPTURE_STATUS_T; 407 408 typedef struct MMAL_PARAMETER_CAPTURE_STATUS_T 409 { 410 MMAL_PARAMETER_HEADER_T hdr; 411 412 MMAL_PARAM_CAPTURE_STATUS_T status; /**< Capture status */ 413 } MMAL_PARAMETER_CAPTURE_STATUS_T; 414 415 typedef enum MMAL_PARAM_FOCUS_STATUS_T 416 { 417 MMAL_PARAM_FOCUS_STATUS_OFF, 418 MMAL_PARAM_FOCUS_STATUS_REQUEST, 419 MMAL_PARAM_FOCUS_STATUS_REACHED, 420 MMAL_PARAM_FOCUS_STATUS_UNABLE_TO_REACH, 421 MMAL_PARAM_FOCUS_STATUS_LOST, 422 MMAL_PARAM_FOCUS_STATUS_CAF_MOVING, 423 MMAL_PARAM_FOCUS_STATUS_CAF_SUCCESS, 424 MMAL_PARAM_FOCUS_STATUS_CAF_FAILED, 425 MMAL_PARAM_FOCUS_STATUS_MANUAL_MOVING, 426 MMAL_PARAM_FOCUS_STATUS_MANUAL_REACHED, 427 MMAL_PARAM_FOCUS_STATUS_CAF_WATCHING, 428 MMAL_PARAM_FOCUS_STATUS_CAF_SCENE_CHANGED, 429 430 MMAL_PARAM_FOCUS_STATUS_MAX = 0x7FFFFFFF 431 } MMAL_PARAM_FOCUS_STATUS_T; 432 433 typedef struct MMAL_PARAMETER_FOCUS_STATUS_T 434 { 435 MMAL_PARAMETER_HEADER_T hdr; 436 437 MMAL_PARAM_FOCUS_STATUS_T status; /**< Focus status */ 438 } MMAL_PARAMETER_FOCUS_STATUS_T; 439 440 typedef enum MMAL_PARAM_FACE_TRACK_MODE_T 441 { 442 MMAL_PARAM_FACE_DETECT_NONE, /**< Disables face detection */ 443 MMAL_PARAM_FACE_DETECT_ON, /**< Enables face detection */ 444 MMAL_PARAM_FACE_DETECT_MAX = 0x7FFFFFFF 445 } MMAL_PARAM_FACE_TRACK_MODE_T; 446 447 typedef struct MMAL_PARAMETER_FACE_TRACK_T /* face tracking control */ 448 { 449 MMAL_PARAMETER_HEADER_T hdr; 450 MMAL_PARAM_FACE_TRACK_MODE_T mode; 451 uint32_t maxRegions; 452 uint32_t frames; 453 uint32_t quality; 454 } MMAL_PARAMETER_FACE_TRACK_T; 455 456 typedef struct MMAL_PARAMETER_FACE_TRACK_FACE_T /* face tracking face information */ 457 { 458 int32_t face_id; /**< Face ID. Should remain the same whilst the face is detected to remain in the scene */ 459 int32_t score; /**< Confidence of the face detection. Range 1-100 (1=unsure, 100=positive). */ 460 MMAL_RECT_T face_rect; /**< Rectangle around the whole face */ 461 462 MMAL_RECT_T eye_rect[2]; /**< Rectangle around the eyes ([0] = left eye, [1] = right eye) */ 463 MMAL_RECT_T mouth_rect; /**< Rectangle around the mouth */ 464 } MMAL_PARAMETER_FACE_TRACK_FACE_T; 465 466 typedef struct MMAL_PARAMETER_FACE_TRACK_RESULTS_T /* face tracking results */ 467 { 468 MMAL_PARAMETER_HEADER_T hdr; 469 470 uint32_t num_faces; /**< Number of faces detected */ 471 uint32_t frame_width; /**< Width of the frame on which the faces were detected (allows scaling) */ 472 uint32_t frame_height; /**< Height of the frame on which the faces were detected (allows scaling) */ 473 474 MMAL_PARAMETER_FACE_TRACK_FACE_T faces[1]; /**< Face information (variable length array */ 475 } MMAL_PARAMETER_FACE_TRACK_RESULTS_T; 476 477 typedef enum MMAL_PARAMETER_CAMERA_CONFIG_TIMESTAMP_MODE_T 478 { 479 MMAL_PARAM_TIMESTAMP_MODE_ZERO, /**< Always timestamp frames as 0 */ 480 MMAL_PARAM_TIMESTAMP_MODE_RAW_STC, /**< Use the raw STC value for the frame timestamp */ 481 MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /**< Use the STC timestamp but subtract the timestamp 482 * of the first frame sent to give a zero based timestamp. 483 */ 484 MMAL_PARAM_TIMESTAMP_MODE_MAX = 0x7FFFFFFF 485 } MMAL_PARAMETER_CAMERA_CONFIG_TIMESTAMP_MODE_T; 486 487 typedef struct MMAL_PARAMETER_CAMERA_CONFIG_T 488 { 489 MMAL_PARAMETER_HEADER_T hdr; 490 491 /* Parameters for setting up the image pools */ 492 uint32_t max_stills_w; /**< Max size of stills capture */ 493 uint32_t max_stills_h; 494 uint32_t stills_yuv422; /**< Allow YUV422 stills capture */ 495 uint32_t one_shot_stills; /**< Continuous or one shot stills captures. */ 496 497 uint32_t max_preview_video_w; /**< Max size of the preview or video capture frames */ 498 uint32_t max_preview_video_h; 499 uint32_t num_preview_video_frames; 500 501 uint32_t stills_capture_circular_buffer_height; /**< Sets the height of the circular buffer for stills capture. */ 502 503 uint32_t fast_preview_resume; /**< Allows preview/encode to resume as fast as possible after the stills input frame 504 * has been received, and then processes the still frame in the background 505 * whilst preview/encode has resumed. 506 * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE. 507 */ 508 509 MMAL_PARAMETER_CAMERA_CONFIG_TIMESTAMP_MODE_T use_stc_timestamp; 510 /**< Selects algorithm for timestamping frames if there is no clock component connected. 511 */ 512 513 514 } MMAL_PARAMETER_CAMERA_CONFIG_T; 515 516 #define MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS 4 517 #define MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES 2 518 #define MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN 16 519 520 typedef struct MMAL_PARAMETER_CAMERA_INFO_CAMERA_T 521 { 522 uint32_t port_id; 523 uint32_t max_width; 524 uint32_t max_height; 525 MMAL_BOOL_T lens_present; 526 char camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN]; 527 } MMAL_PARAMETER_CAMERA_INFO_CAMERA_T; 528 529 typedef enum MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_T 530 { 531 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_XENON = 0, /* Make values explicit */ 532 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_LED = 1, /* to ensure they match */ 533 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_OTHER = 2, /* values in config ini */ 534 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_MAX = 0x7FFFFFFF 535 } MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_T; 536 537 typedef struct MMAL_PARAMETER_CAMERA_INFO_FLASH_T 538 { 539 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_T flash_type; 540 } MMAL_PARAMETER_CAMERA_INFO_FLASH_T; 541 542 typedef struct MMAL_PARAMETER_CAMERA_INFO_T 543 { 544 MMAL_PARAMETER_HEADER_T hdr; 545 uint32_t num_cameras; 546 uint32_t num_flashes; 547 MMAL_PARAMETER_CAMERA_INFO_CAMERA_T cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS]; 548 MMAL_PARAMETER_CAMERA_INFO_FLASH_T flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES]; 549 } MMAL_PARAMETER_CAMERA_INFO_T; 550 551 typedef enum MMAL_PARAMETER_CAPTUREMODE_MODE_T 552 { 553 MMAL_PARAM_CAPTUREMODE_WAIT_FOR_END, /**< Resumes preview once capture is completed. */ 554 MMAL_PARAM_CAPTUREMODE_WAIT_FOR_END_AND_HOLD, /**< Resumes preview once capture is completed, and hold the image for subsequent reprocessing. */ 555 MMAL_PARAM_CAPTUREMODE_RESUME_VF_IMMEDIATELY, /**< Resumes preview as soon as possible once capture frame is received from the sensor. 556 * Requires fast_preview_resume to be set via MMAL_PARAMETER_CAMERA_CONFIG. 557 */ 558 } MMAL_PARAMETER_CAPTUREMODE_MODE_T; 559 560 /** Stills capture mode control. */ 561 typedef struct MMAL_PARAMETER_CAPTUREMODE_T 562 { 563 MMAL_PARAMETER_HEADER_T hdr; 564 MMAL_PARAMETER_CAPTUREMODE_MODE_T mode; 565 } MMAL_PARAMETER_CAPTUREMODE_T; 566 567 typedef enum MMAL_PARAMETER_FOCUS_REGION_TYPE_T 568 { 569 MMAL_PARAMETER_FOCUS_REGION_TYPE_NORMAL, /**< Region defines a generic region */ 570 MMAL_PARAMETER_FOCUS_REGION_TYPE_FACE, /**< Region defines a face */ 571 MMAL_PARAMETER_FOCUS_REGION_TYPE_MAX 572 } MMAL_PARAMETER_FOCUS_REGION_TYPE_T; 573 574 typedef struct MMAL_PARAMETER_FOCUS_REGION_T 575 { 576 MMAL_RECT_T rect; /**< Focus rectangle as 0P16 fixed point values. */ 577 uint32_t weight; /**< Region weighting. */ 578 uint32_t mask; /**< Mask for multi-stage regions */ 579 MMAL_PARAMETER_FOCUS_REGION_TYPE_T type; /**< Region type */ 580 } MMAL_PARAMETER_FOCUS_REGION_T; 581 582 typedef struct MMAL_PARAMETER_FOCUS_REGIONS_T 583 { 584 MMAL_PARAMETER_HEADER_T hdr; 585 uint32_t num_regions; /**< Number of regions defined */ 586 MMAL_BOOL_T lock_to_faces; /**< If region is within tolerance of a face, adopt face rect instead of defined region */ 587 MMAL_PARAMETER_FOCUS_REGION_T regions[1]; /**< Variable number of regions */ 588 } MMAL_PARAMETER_FOCUS_REGIONS_T; 589 590 typedef struct MMAL_PARAMETER_INPUT_CROP_T 591 { 592 MMAL_PARAMETER_HEADER_T hdr; 593 MMAL_RECT_T rect; /**< Crop rectangle as 16P16 fixed point values */ 594 } MMAL_PARAMETER_INPUT_CROP_T; 595 596 typedef struct MMAL_PARAMETER_SENSOR_INFORMATION_T 597 { 598 MMAL_PARAMETER_HEADER_T hdr; 599 MMAL_RATIONAL_T f_number; /**< Lens f-number */ 600 MMAL_RATIONAL_T focal_length; /**< Lens focal length */ 601 uint32_t model_id; /**< Sensor reported model id */ 602 uint32_t manufacturer_id; /**< Sensor reported manufacturer id */ 603 uint32_t revision; /**< Sensor reported revision */ 604 } MMAL_PARAMETER_SENSOR_INFORMATION_T; 605 606 typedef struct MMAL_PARAMETER_FLASH_SELECT_T 607 { 608 MMAL_PARAMETER_HEADER_T hdr; 609 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_T flash_type; /**< Flash type to use */ 610 } MMAL_PARAMETER_FLASH_SELECT_T; 611 612 typedef struct MMAL_PARAMETER_FIELD_OF_VIEW_T 613 { 614 MMAL_PARAMETER_HEADER_T hdr; 615 MMAL_RATIONAL_T fov_h; /**< Horizontal field of view */ 616 MMAL_RATIONAL_T fov_v; /**< Vertical field of view */ 617 } MMAL_PARAMETER_FIELD_OF_VIEW_T; 618 619 typedef enum MMAL_PARAMETER_DRC_STRENGTH_T 620 { 621 MMAL_PARAMETER_DRC_STRENGTH_OFF, 622 MMAL_PARAMETER_DRC_STRENGTH_LOW, 623 MMAL_PARAMETER_DRC_STRENGTH_MEDIUM, 624 MMAL_PARAMETER_DRC_STRENGTH_HIGH, 625 MMAL_PARAMETER_DRC_STRENGTH_MAX = 0x7fffffff 626 } MMAL_PARAMETER_DRC_STRENGTH_T; 627 628 typedef struct MMAL_PARAMETER_DRC_T 629 { 630 MMAL_PARAMETER_HEADER_T hdr; 631 MMAL_PARAMETER_DRC_STRENGTH_T strength; /**< DRC strength */ 632 } MMAL_PARAMETER_DRC_T; 633 634 typedef enum MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_T 635 { 636 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_FACETRACKING, 637 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_REDEYE_REDUCTION, 638 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_VIDEO_STABILISATION, 639 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_WRITE_RAW, 640 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_VIDEO_DENOISE, 641 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_STILLS_DENOISE, 642 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_TEMPORAL_DENOISE, 643 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_ANTISHAKE, 644 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_IMAGE_EFFECTS, 645 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_DYNAMIC_RANGE_COMPRESSION, 646 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_FACE_RECOGNITION, 647 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_FACE_BEAUTIFICATION, 648 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_SCENE_DETECTION, 649 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_HIGH_DYNAMIC_RANGE, 650 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_MAX = 0x7fffffff 651 } MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_T; 652 653 typedef struct MMAL_PARAMETER_ALGORITHM_CONTROL_T 654 { 655 MMAL_PARAMETER_HEADER_T hdr; 656 MMAL_PARAMETER_ALGORITHM_CONTROL_ALGORITHMS_T algorithm; 657 MMAL_BOOL_T enabled; 658 } MMAL_PARAMETER_ALGORITHM_CONTROL_T; 659 660 661 typedef enum MMAL_PARAM_CAMERA_USE_CASE_T 662 { 663 MMAL_PARAM_CAMERA_USE_CASE_UNKNOWN, /**< Compromise on behaviour as use case totally unknown */ 664 MMAL_PARAM_CAMERA_USE_CASE_STILLS_CAPTURE, /**< Stills capture use case */ 665 MMAL_PARAM_CAMERA_USE_CASE_VIDEO_CAPTURE, /**< Video encode (camcorder) use case */ 666 667 MMAL_PARAM_CAMERA_USE_CASE_MAX = 0x7fffffff 668 } MMAL_PARAM_CAMERA_USE_CASE_T; 669 670 typedef struct MMAL_PARAMETER_CAMERA_USE_CASE_T 671 { 672 MMAL_PARAMETER_HEADER_T hdr; 673 674 MMAL_PARAM_CAMERA_USE_CASE_T use_case; /**< Use case */ 675 } MMAL_PARAMETER_CAMERA_USE_CASE_T; 676 677 typedef struct MMAL_PARAMETER_FPS_RANGE_T 678 { 679 MMAL_PARAMETER_HEADER_T hdr; 680 681 MMAL_RATIONAL_T fps_low; /**< Low end of the permitted framerate range */ 682 MMAL_RATIONAL_T fps_high; /**< High end of the permitted framerate range */ 683 } MMAL_PARAMETER_FPS_RANGE_T; 684 685 typedef struct MMAL_PARAMETER_ZEROSHUTTERLAG_T 686 { 687 MMAL_PARAMETER_HEADER_T hdr; 688 689 MMAL_BOOL_T zero_shutter_lag_mode; /**< Select zero shutter lag mode from sensor */ 690 MMAL_BOOL_T concurrent_capture; /**< Activate full zero shutter lag mode and 691 * use the last preview raw image for the stills capture 692 */ 693 } MMAL_PARAMETER_ZEROSHUTTERLAG_T; 694 695 typedef struct MMAL_PARAMETER_AWB_GAINS_T 696 { 697 MMAL_PARAMETER_HEADER_T hdr; 698 699 MMAL_RATIONAL_T r_gain; /**< Red gain */ 700 MMAL_RATIONAL_T b_gain; /**< Blue gain */ 701 } MMAL_PARAMETER_AWB_GAINS_T; 702 703 typedef struct MMAL_PARAMETER_CAMERA_SETTINGS_T 704 { 705 MMAL_PARAMETER_HEADER_T hdr; 706 707 uint32_t exposure; 708 MMAL_RATIONAL_T analog_gain; 709 MMAL_RATIONAL_T digital_gain; 710 MMAL_RATIONAL_T awb_red_gain; 711 MMAL_RATIONAL_T awb_blue_gain; 712 uint32_t focus_position; 713 } MMAL_PARAMETER_CAMERA_SETTINGS_T; 714 715 typedef enum MMAL_PARAM_PRIVACY_INDICATOR_T 716 { 717 MMAL_PARAMETER_PRIVACY_INDICATOR_OFF, /**< Indicator will be off. */ 718 MMAL_PARAMETER_PRIVACY_INDICATOR_ON, /**< Indicator will come on just after a stills capture and 719 * and remain on for 2seconds, or will be on whilst output[1] 720 * is actively producing images. 721 */ 722 MMAL_PARAMETER_PRIVACY_INDICATOR_FORCE_ON, /**< Turns indicator of for 2s independent of capture status. 723 * Set this mode repeatedly to keep the indicator on for a 724 * longer period. 725 */ 726 MMAL_PARAMETER_PRIVACY_INDICATOR_MAX = 0x7fffffff 727 } MMAL_PARAM_PRIVACY_INDICATOR_T; 728 729 typedef struct MMAL_PARAMETER_PRIVACY_INDICATOR_T 730 { 731 MMAL_PARAMETER_HEADER_T hdr; 732 733 MMAL_PARAM_PRIVACY_INDICATOR_T mode; 734 } MMAL_PARAMETER_PRIVACY_INDICATOR_T; 735 736 #define MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN 32 737 typedef struct MMAL_PARAMETER_CAMERA_ANNOTATE_T 738 { 739 MMAL_PARAMETER_HEADER_T hdr; 740 741 MMAL_BOOL_T enable; 742 char text[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN]; 743 MMAL_BOOL_T show_shutter; 744 MMAL_BOOL_T show_analog_gain; 745 MMAL_BOOL_T show_lens; 746 MMAL_BOOL_T show_caf; 747 MMAL_BOOL_T show_motion; 748 } MMAL_PARAMETER_CAMERA_ANNOTATE_T; 749 750 #define MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V2 256 751 typedef struct MMAL_PARAMETER_CAMERA_ANNOTATE_V2_T 752 { 753 MMAL_PARAMETER_HEADER_T hdr; 754 755 MMAL_BOOL_T enable; 756 MMAL_BOOL_T show_shutter; 757 MMAL_BOOL_T show_analog_gain; 758 MMAL_BOOL_T show_lens; 759 MMAL_BOOL_T show_caf; 760 MMAL_BOOL_T show_motion; 761 MMAL_BOOL_T show_frame_num; 762 MMAL_BOOL_T black_text_background; 763 char text[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V2]; 764 } MMAL_PARAMETER_CAMERA_ANNOTATE_V2_T; 765 766 #define MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V3 256 767 typedef struct MMAL_PARAMETER_CAMERA_ANNOTATE_V3_T 768 { 769 MMAL_PARAMETER_HEADER_T hdr; 770 771 MMAL_BOOL_T enable; 772 MMAL_BOOL_T show_shutter; 773 MMAL_BOOL_T show_analog_gain; 774 MMAL_BOOL_T show_lens; 775 MMAL_BOOL_T show_caf; 776 MMAL_BOOL_T show_motion; 777 MMAL_BOOL_T show_frame_num; 778 MMAL_BOOL_T enable_text_background; 779 MMAL_BOOL_T custom_background_colour; 780 uint8_t custom_background_Y; 781 uint8_t custom_background_U; 782 uint8_t custom_background_V; 783 uint8_t dummy1; 784 MMAL_BOOL_T custom_text_colour; 785 uint8_t custom_text_Y; 786 uint8_t custom_text_U; 787 uint8_t custom_text_V; 788 uint8_t text_size; 789 char text[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V3]; 790 } MMAL_PARAMETER_CAMERA_ANNOTATE_V3_T; 791 792 #define MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V4 256 793 typedef struct MMAL_PARAMETER_CAMERA_ANNOTATE_V4_T 794 { 795 MMAL_PARAMETER_HEADER_T hdr; 796 797 MMAL_BOOL_T enable; 798 MMAL_BOOL_T show_shutter; 799 MMAL_BOOL_T show_analog_gain; 800 MMAL_BOOL_T show_lens; 801 MMAL_BOOL_T show_caf; 802 MMAL_BOOL_T show_motion; 803 MMAL_BOOL_T show_frame_num; 804 MMAL_BOOL_T enable_text_background; 805 MMAL_BOOL_T custom_background_colour; 806 uint8_t custom_background_Y; 807 uint8_t custom_background_U; 808 uint8_t custom_background_V; 809 uint8_t dummy1; 810 MMAL_BOOL_T custom_text_colour; 811 uint8_t custom_text_Y; 812 uint8_t custom_text_U; 813 uint8_t custom_text_V; 814 uint8_t text_size; 815 char text[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V3]; 816 uint32_t justify; //0=centre, 1=left, 2=right 817 uint32_t x_offset; //Offset from the justification edge 818 uint32_t y_offset; 819 } MMAL_PARAMETER_CAMERA_ANNOTATE_V4_T; 820 821 typedef enum MMAL_STEREOSCOPIC_MODE_T { 822 MMAL_STEREOSCOPIC_MODE_NONE = 0, 823 MMAL_STEREOSCOPIC_MODE_SIDE_BY_SIDE = 1, 824 MMAL_STEREOSCOPIC_MODE_TOP_BOTTOM = 2, 825 MMAL_STEREOSCOPIC_MODE_MAX = 0x7FFFFFFF, 826 } MMAL_STEREOSCOPIC_MODE_T; 827 828 typedef struct MMAL_PARAMETER_STEREOSCOPIC_MODE_T 829 { 830 MMAL_PARAMETER_HEADER_T hdr; 831 832 MMAL_STEREOSCOPIC_MODE_T mode; 833 MMAL_BOOL_T decimate; 834 MMAL_BOOL_T swap_eyes; 835 } MMAL_PARAMETER_STEREOSCOPIC_MODE_T; 836 837 typedef enum MMAL_CAMERA_INTERFACE_T { 838 MMAL_CAMERA_INTERFACE_CSI2 = 0, 839 MMAL_CAMERA_INTERFACE_CCP2 = 1, 840 MMAL_CAMERA_INTERFACE_CPI = 2, 841 MMAL_CAMERA_INTERFACE_MAX = 0x7FFFFFFF, 842 } MMAL_CAMERA_INTERFACE_T; 843 844 typedef struct MMAL_PARAMETER_CAMERA_INTERFACE_T 845 { 846 MMAL_PARAMETER_HEADER_T hdr; 847 848 MMAL_CAMERA_INTERFACE_T mode; 849 } MMAL_PARAMETER_CAMERA_INTERFACE_T; 850 851 typedef enum MMAL_CAMERA_CLOCKING_MODE_T { 852 MMAL_CAMERA_CLOCKING_MODE_STROBE = 0, 853 MMAL_CAMERA_CLOCKING_MODE_CLOCK = 1, 854 MMAL_CAMERA_CLOCKING_MODE_MAX = 0x7FFFFFFF, 855 } MMAL_CAMERA_CLOCKING_MODE_T; 856 857 typedef struct MMAL_PARAMETER_CAMERA_CLOCKING_MODE_T 858 { 859 MMAL_PARAMETER_HEADER_T hdr; 860 861 MMAL_CAMERA_CLOCKING_MODE_T mode; 862 } MMAL_PARAMETER_CAMERA_CLOCKING_MODE_T; 863 864 typedef enum MMAL_CAMERA_RX_CONFIG_DECODE { 865 MMAL_CAMERA_RX_CONFIG_DECODE_NONE = 0, 866 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM8TO10 = 1, 867 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM7TO10 = 2, 868 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM6TO10 = 3, 869 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM8TO12 = 4, 870 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM7TO12 = 5, 871 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM6TO12 = 6, 872 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM10TO14 = 7, 873 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM8TO14 = 8, 874 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM12TO16 = 9, 875 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM10TO16 = 10, 876 MMAL_CAMERA_RX_CONFIG_DECODE_DPCM8TO16 = 11, 877 MMAL_CAMERA_RX_CONFIG_DECODE_MAX = 0x7FFFFFFF 878 } MMAL_CAMERA_RX_CONFIG_DECODE; 879 880 typedef enum MMAL_CAMERA_RX_CONFIG_ENCODE { 881 MMAL_CAMERA_RX_CONFIG_ENCODE_NONE = 0, 882 MMAL_CAMERA_RX_CONFIG_ENCODE_DPCM10TO8 = 1, 883 MMAL_CAMERA_RX_CONFIG_ENCODE_DPCM12TO8 = 2, 884 MMAL_CAMERA_RX_CONFIG_ENCODE_DPCM14TO8 = 3, 885 MMAL_CAMERA_RX_CONFIG_ENCODE_MAX = 0x7FFFFFFF 886 } MMAL_CAMERA_RX_CONFIG_ENCODE; 887 888 typedef enum MMAL_CAMERA_RX_CONFIG_UNPACK { 889 MMAL_CAMERA_RX_CONFIG_UNPACK_NONE = 0, 890 MMAL_CAMERA_RX_CONFIG_UNPACK_6 = 1, 891 MMAL_CAMERA_RX_CONFIG_UNPACK_7 = 2, 892 MMAL_CAMERA_RX_CONFIG_UNPACK_8 = 3, 893 MMAL_CAMERA_RX_CONFIG_UNPACK_10 = 4, 894 MMAL_CAMERA_RX_CONFIG_UNPACK_12 = 5, 895 MMAL_CAMERA_RX_CONFIG_UNPACK_14 = 6, 896 MMAL_CAMERA_RX_CONFIG_UNPACK_16 = 7, 897 MMAL_CAMERA_RX_CONFIG_UNPACK_MAX = 0x7FFFFFFF 898 } MMAL_CAMERA_RX_CONFIG_UNPACK; 899 900 typedef enum MMAL_CAMERA_RX_CONFIG_PACK { 901 MMAL_CAMERA_RX_CONFIG_PACK_NONE = 0, 902 MMAL_CAMERA_RX_CONFIG_PACK_8 = 1, 903 MMAL_CAMERA_RX_CONFIG_PACK_10 = 2, 904 MMAL_CAMERA_RX_CONFIG_PACK_12 = 3, 905 MMAL_CAMERA_RX_CONFIG_PACK_14 = 4, 906 MMAL_CAMERA_RX_CONFIG_PACK_16 = 5, 907 MMAL_CAMERA_RX_CONFIG_PACK_RAW10 = 6, 908 MMAL_CAMERA_RX_CONFIG_PACK_RAW12 = 7, 909 MMAL_CAMERA_RX_CONFIG_PACK_MAX = 0x7FFFFFFF 910 } MMAL_CAMERA_RX_CONFIG_PACK; 911 912 typedef struct MMAL_PARAMETER_CAMERA_RX_CONFIG_T 913 { 914 MMAL_PARAMETER_HEADER_T hdr; 915 916 MMAL_CAMERA_RX_CONFIG_DECODE decode; 917 MMAL_CAMERA_RX_CONFIG_ENCODE encode; 918 MMAL_CAMERA_RX_CONFIG_UNPACK unpack; 919 MMAL_CAMERA_RX_CONFIG_PACK pack; 920 uint32_t data_lanes; 921 uint32_t encode_block_length; 922 uint32_t embedded_data_lines; 923 uint32_t image_id; 924 } MMAL_PARAMETER_CAMERA_RX_CONFIG_T; 925 926 typedef struct MMAL_PARAMETER_CAMERA_RX_TIMING_T 927 { 928 MMAL_PARAMETER_HEADER_T hdr; 929 930 uint32_t timing1; 931 uint32_t timing2; 932 uint32_t timing3; 933 uint32_t timing4; 934 uint32_t timing5; 935 uint32_t term1; 936 uint32_t term2; 937 uint32_t cpi_timing1; 938 uint32_t cpi_timing2; 939 } MMAL_PARAMETER_CAMERA_RX_TIMING_T; 940 941 typedef struct MMAL_PARAMETER_LENS_SHADING_T 942 { 943 MMAL_PARAMETER_HEADER_T hdr; 944 945 MMAL_BOOL_T enabled; 946 uint32_t grid_cell_size; 947 uint32_t grid_width; 948 uint32_t grid_stride; 949 uint32_t grid_height; 950 uint32_t mem_handle_table; 951 uint32_t ref_transform; 952 } MMAL_PARAMETER_LENS_SHADING_T; 953 954 typedef enum MMAL_PARAM_LS_GAIN_FORMAT_TYPE_T 955 { 956 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U0P8_1 = 0, 957 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U1P7_0 = 1, 958 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U1P7_1 = 2, 959 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U2P6_0 = 3, 960 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U2P6_1 = 4, 961 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U3P5_0 = 5, 962 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U3P5_1 = 6, 963 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_U4P10 = 7, 964 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_DUMMY = 0x7FFFFFFF 965 } MMAL_PARAM_LS_GAIN_FORMAT_TYPE_T; 966 967 typedef struct MMAL_PARAMETER_LENS_SHADING_V2_T 968 { 969 MMAL_PARAMETER_HEADER_T hdr; 970 971 MMAL_BOOL_T enabled; 972 uint32_t grid_cell_size; 973 uint32_t grid_width; 974 uint32_t grid_stride; 975 uint32_t grid_height; 976 uint32_t mem_handle_table; 977 uint32_t ref_transform; 978 MMAL_BOOL_T corner_sampled; 979 MMAL_PARAM_LS_GAIN_FORMAT_TYPE_T gain_format; 980 } MMAL_PARAMETER_LENS_SHADING_V2_T; 981 982 /* 983 The mode determines the kind of resize. 984 MMAL_RESIZE_BOX allow the max_width and max_height to set a bounding box into 985 which the output must fit. 986 MMAL_RESIZE_BYTES allows max_bytes to set the maximum number of bytes into which the 987 full output frame must fit. Two flags aid the setting of the output 988 size. preserve_aspect_ratio sets whether the resize should 989 preserve the aspect ratio of the incoming 990 image. allow_upscaling sets whether the resize is allowed to 991 increase the size of the output image compared to the size of the 992 input image. 993 */ 994 typedef enum MMAL_RESIZEMODE_T { 995 MMAL_RESIZE_NONE, 996 MMAL_RESIZE_CROP, 997 MMAL_RESIZE_BOX, 998 MMAL_RESIZE_BYTES, 999 MMAL_RESIZE_DUMMY = 0x7FFFFFFF 1000 } MMAL_RESIZEMODE_T; 1001 1002 typedef struct MMAL_PARAMETER_RESIZE_T { 1003 MMAL_PARAMETER_HEADER_T hdr; 1004 1005 MMAL_RESIZEMODE_T mode; 1006 uint32_t max_width; 1007 uint32_t max_height; 1008 uint32_t max_bytes; 1009 MMAL_BOOL_T preserve_aspect_ratio; 1010 MMAL_BOOL_T allow_upscaling; 1011 } MMAL_PARAMETER_RESIZE_T; 1012 1013 typedef struct MMAL_PARAMETER_CROP_T { 1014 MMAL_PARAMETER_HEADER_T hdr; 1015 1016 MMAL_RECT_T rect; 1017 } MMAL_PARAMETER_CROP_T; 1018 1019 typedef struct MMAL_PARAMETER_CCM_T { 1020 MMAL_RATIONAL_T ccm[3][3]; 1021 int32_t offsets[3]; 1022 } MMAL_PARAMETER_CCM_T; 1023 1024 typedef struct MMAL_PARAMETER_CUSTOM_CCM_T { 1025 MMAL_PARAMETER_HEADER_T hdr; 1026 1027 MMAL_BOOL_T enable; /**< Enable the custom CCM. */ 1028 MMAL_PARAMETER_CCM_T ccm; /**< CCM to be used. */ 1029 } MMAL_PARAMETER_CUSTOM_CCM_T; 1030 1031 typedef struct MMAL_PARAMETER_BLACK_LEVEL_T { 1032 MMAL_PARAMETER_HEADER_T hdr; 1033 1034 MMAL_BOOL_T enable; /**< Enable denoise parameters. */ 1035 uint16_t black_level_r; /**< Black level of red channel (out of 16 bits). */ 1036 uint16_t black_level_g; /**< Black level of green channel (out of 16 bits). */ 1037 uint16_t black_level_b; /**< Black level of blue channel (out of 16 bits). */ 1038 } MMAL_PARAMETER_BLACK_LEVEL_T; 1039 1040 typedef enum MMAL_PARAM_CDN_MODE_T { 1041 MMAL_PARAM_CDN_FAST = 0, 1042 MMAL_PARAM_CDN_HIGH_QUALITY = 1, 1043 MMAL_PARAM_CDN_DUMMY = 0x7FFFFFFF 1044 } MMAL_PARAM_CDN_MODE_T; 1045 1046 typedef struct MMAL_PARAMETER_CDN_T { 1047 MMAL_PARAMETER_HEADER_T hdr; 1048 1049 MMAL_BOOL_T enable; /**< Enable colour denoise parameters. */ 1050 MMAL_PARAM_CDN_MODE_T mode; /**< Colour denoise mode of operation. */ 1051 } MMAL_PARAMETER_CDN_T; 1052 1053 typedef struct MMAL_PARAMETER_DENOISE_T { 1054 MMAL_PARAMETER_HEADER_T hdr; 1055 1056 MMAL_BOOL_T enable; /**< Enable denoise parameters. */ 1057 uint32_t constant; /**< Constant offset of the noise profile. */ 1058 MMAL_RATIONAL_T slope; /**< Slope of the noise profile. */ 1059 MMAL_RATIONAL_T strength; /**< Denoise strength. */ 1060 } MMAL_PARAMETER_DENOISE_T; 1061 1062 typedef struct MMAL_PARAMETER_SHARPEN_T { 1063 MMAL_PARAMETER_HEADER_T hdr; 1064 1065 MMAL_BOOL_T enable; /**< Enable sharpening parameters. */ 1066 MMAL_RATIONAL_T threshold; /**< Threshold when sharpening starts. */ 1067 MMAL_RATIONAL_T strength; /**< Rate at which sharpening ramps. */ 1068 MMAL_RATIONAL_T limit; /**< Limit to total sharpening. */ 1069 } MMAL_PARAMETER_SHARPEN_T; 1070 1071 typedef struct MMAL_PARAMETER_GREEN_EQ_T { 1072 MMAL_PARAMETER_HEADER_T hdr; 1073 1074 MMAL_BOOL_T enable; /**< Enable Green Equalisation parameters. */ 1075 uint32_t offset; /**< Offset of Green Equalisation threshold. */ 1076 MMAL_RATIONAL_T slope; /**< Rate at which Green Equalisation threshold ramps. */ 1077 } MMAL_PARAMETER_GREEN_EQ_T; 1078 1079 typedef enum MMAL_DPC_MODE_T { 1080 MMAL_DPC_MODE_OFF = 0, 1081 MMAL_DPC_MODE_NORMAL = 1, 1082 MMAL_DPC_MODE_STRONG = 2, 1083 MMAL_DPC_MODE_MAX = 0x7FFFFFFF, 1084 } MMAL_DPC_MODE_T; 1085 1086 typedef struct MMAL_PARAMETER_DPC_T { 1087 MMAL_PARAMETER_HEADER_T hdr; 1088 1089 MMAL_BOOL_T enable; /**< Enable DPC parameters. */ 1090 MMAL_DPC_MODE_T strength; /**< DPC strength. */ 1091 } MMAL_PARAMETER_DPC_T; 1092 1093 #define MMAL_NUM_GAMMA_PTS 33 1094 1095 typedef struct MMAL_PARAMETER_GAMMA_T { 1096 MMAL_PARAMETER_HEADER_T hdr; 1097 1098 MMAL_BOOL_T enable; /**< Enable gamma parameters. */ 1099 uint16_t X[MMAL_NUM_GAMMA_PTS]; /**< X values (16 bit range) */ 1100 uint16_t Y[MMAL_NUM_GAMMA_PTS]; /**< Y values (16 bit range) */ 1101 } MMAL_PARAMETER_GAMMA_T; 1102 1103 #endif /* MMAL_PARAMETERS_CAMERA_H */ 1104