1 /* 2 * Broadcom BM2835 V4L2 driver 3 * 4 * Copyright © 2013 Raspberry Pi (Trading) Ltd. 5 * 6 * This file is subject to the terms and conditions of the GNU General Public 7 * License. See the file COPYING in the main directory of this archive 8 * for more details. 9 * 10 * Authors: Vincent Sanders <vincent.sanders@collabora.co.uk> 11 * Dave Stevenson <dsteve@broadcom.com> 12 * Simon Mellor <simellor@broadcom.com> 13 * Luke Diamand <luked@broadcom.com> 14 */ 15 16 /* common parameters */ 17 18 /** @name Parameter groups 19 * Parameters are divided into groups, and then allocated sequentially within 20 * a group using an enum. 21 * @{ 22 */ 23 24 /** Common parameter ID group, used with many types of component. */ 25 #define MMAL_PARAMETER_GROUP_COMMON (0<<16) 26 /** Camera-specific parameter ID group. */ 27 #define MMAL_PARAMETER_GROUP_CAMERA (1<<16) 28 /** Video-specific parameter ID group. */ 29 #define MMAL_PARAMETER_GROUP_VIDEO (2<<16) 30 /** Audio-specific parameter ID group. */ 31 #define MMAL_PARAMETER_GROUP_AUDIO (3<<16) 32 /** Clock-specific parameter ID group. */ 33 #define MMAL_PARAMETER_GROUP_CLOCK (4<<16) 34 /** Miracast-specific parameter ID group. */ 35 #define MMAL_PARAMETER_GROUP_MIRACAST (5<<16) 36 37 /* Common parameters */ 38 enum mmal_parameter_common_type { 39 MMAL_PARAMETER_UNUSED /**< Never a valid parameter ID */ 40 = MMAL_PARAMETER_GROUP_COMMON, 41 MMAL_PARAMETER_SUPPORTED_ENCODINGS, /**< MMAL_PARAMETER_ENCODING_T */ 42 MMAL_PARAMETER_URI, /**< MMAL_PARAMETER_URI_T */ 43 44 /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */ 45 MMAL_PARAMETER_CHANGE_EVENT_REQUEST, 46 47 /** MMAL_PARAMETER_BOOLEAN_T */ 48 MMAL_PARAMETER_ZERO_COPY, 49 50 /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */ 51 MMAL_PARAMETER_BUFFER_REQUIREMENTS, 52 53 MMAL_PARAMETER_STATISTICS, /**< MMAL_PARAMETER_STATISTICS_T */ 54 MMAL_PARAMETER_CORE_STATISTICS, /**< MMAL_PARAMETER_CORE_STATISTICS_T */ 55 MMAL_PARAMETER_MEM_USAGE, /**< MMAL_PARAMETER_MEM_USAGE_T */ 56 MMAL_PARAMETER_BUFFER_FLAG_FILTER, /**< MMAL_PARAMETER_UINT32_T */ 57 MMAL_PARAMETER_SEEK, /**< MMAL_PARAMETER_SEEK_T */ 58 MMAL_PARAMETER_POWERMON_ENABLE, /**< MMAL_PARAMETER_BOOLEAN_T */ 59 MMAL_PARAMETER_LOGGING, /**< MMAL_PARAMETER_LOGGING_T */ 60 MMAL_PARAMETER_SYSTEM_TIME, /**< MMAL_PARAMETER_UINT64_T */ 61 MMAL_PARAMETER_NO_IMAGE_PADDING /**< MMAL_PARAMETER_BOOLEAN_T */ 62 }; 63 64 /* camera parameters */ 65 66 enum mmal_parameter_camera_type { 67 /* 0 */ 68 /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */ 69 MMAL_PARAMETER_THUMBNAIL_CONFIGURATION 70 = MMAL_PARAMETER_GROUP_CAMERA, 71 MMAL_PARAMETER_CAPTURE_QUALITY, /**< Unused? */ 72 MMAL_PARAMETER_ROTATION, /**< @ref MMAL_PARAMETER_INT32_T */ 73 MMAL_PARAMETER_EXIF_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 74 MMAL_PARAMETER_EXIF, /**< @ref MMAL_PARAMETER_EXIF_T */ 75 MMAL_PARAMETER_AWB_MODE, /**< @ref MMAL_PARAM_AWBMODE_T */ 76 MMAL_PARAMETER_IMAGE_EFFECT, /**< @ref MMAL_PARAMETER_IMAGEFX_T */ 77 MMAL_PARAMETER_COLOUR_EFFECT, /**< @ref MMAL_PARAMETER_COLOURFX_T */ 78 MMAL_PARAMETER_FLICKER_AVOID, /**< @ref MMAL_PARAMETER_FLICKERAVOID_T */ 79 MMAL_PARAMETER_FLASH, /**< @ref MMAL_PARAMETER_FLASH_T */ 80 MMAL_PARAMETER_REDEYE, /**< @ref MMAL_PARAMETER_REDEYE_T */ 81 MMAL_PARAMETER_FOCUS, /**< @ref MMAL_PARAMETER_FOCUS_T */ 82 MMAL_PARAMETER_FOCAL_LENGTHS, /**< Unused? */ 83 MMAL_PARAMETER_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */ 84 MMAL_PARAMETER_ZOOM, /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */ 85 MMAL_PARAMETER_MIRROR, /**< @ref MMAL_PARAMETER_MIRROR_T */ 86 87 /* 0x10 */ 88 MMAL_PARAMETER_CAMERA_NUM, /**< @ref MMAL_PARAMETER_UINT32_T */ 89 MMAL_PARAMETER_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 90 MMAL_PARAMETER_EXPOSURE_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMODE_T */ 91 MMAL_PARAMETER_EXP_METERING_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMETERINGMODE_T */ 92 MMAL_PARAMETER_FOCUS_STATUS, /**< @ref MMAL_PARAMETER_FOCUS_STATUS_T */ 93 MMAL_PARAMETER_CAMERA_CONFIG, /**< @ref MMAL_PARAMETER_CAMERA_CONFIG_T */ 94 MMAL_PARAMETER_CAPTURE_STATUS, /**< @ref MMAL_PARAMETER_CAPTURE_STATUS_T */ 95 MMAL_PARAMETER_FACE_TRACK, /**< @ref MMAL_PARAMETER_FACE_TRACK_T */ 96 MMAL_PARAMETER_DRAW_BOX_FACES_AND_FOCUS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 97 MMAL_PARAMETER_JPEG_Q_FACTOR, /**< @ref MMAL_PARAMETER_UINT32_T */ 98 MMAL_PARAMETER_FRAME_RATE, /**< @ref MMAL_PARAMETER_FRAME_RATE_T */ 99 MMAL_PARAMETER_USE_STC, /**< @ref MMAL_PARAMETER_CAMERA_STC_MODE_T */ 100 MMAL_PARAMETER_CAMERA_INFO, /**< @ref MMAL_PARAMETER_CAMERA_INFO_T */ 101 MMAL_PARAMETER_VIDEO_STABILISATION, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 102 MMAL_PARAMETER_FACE_TRACK_RESULTS, /**< @ref MMAL_PARAMETER_FACE_TRACK_RESULTS_T */ 103 MMAL_PARAMETER_ENABLE_RAW_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 104 105 /* 0x20 */ 106 MMAL_PARAMETER_DPF_FILE, /**< @ref MMAL_PARAMETER_URI_T */ 107 MMAL_PARAMETER_ENABLE_DPF_FILE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 108 MMAL_PARAMETER_DPF_FAIL_IS_FATAL, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 109 MMAL_PARAMETER_CAPTURE_MODE, /**< @ref MMAL_PARAMETER_CAPTUREMODE_T */ 110 MMAL_PARAMETER_FOCUS_REGIONS, /**< @ref MMAL_PARAMETER_FOCUS_REGIONS_T */ 111 MMAL_PARAMETER_INPUT_CROP, /**< @ref MMAL_PARAMETER_INPUT_CROP_T */ 112 MMAL_PARAMETER_SENSOR_INFORMATION, /**< @ref MMAL_PARAMETER_SENSOR_INFORMATION_T */ 113 MMAL_PARAMETER_FLASH_SELECT, /**< @ref MMAL_PARAMETER_FLASH_SELECT_T */ 114 MMAL_PARAMETER_FIELD_OF_VIEW, /**< @ref MMAL_PARAMETER_FIELD_OF_VIEW_T */ 115 MMAL_PARAMETER_HIGH_DYNAMIC_RANGE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 116 MMAL_PARAMETER_DYNAMIC_RANGE_COMPRESSION, /**< @ref MMAL_PARAMETER_DRC_T */ 117 MMAL_PARAMETER_ALGORITHM_CONTROL, /**< @ref MMAL_PARAMETER_ALGORITHM_CONTROL_T */ 118 MMAL_PARAMETER_SHARPNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ 119 MMAL_PARAMETER_CONTRAST, /**< @ref MMAL_PARAMETER_RATIONAL_T */ 120 MMAL_PARAMETER_BRIGHTNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ 121 MMAL_PARAMETER_SATURATION, /**< @ref MMAL_PARAMETER_RATIONAL_T */ 122 123 /* 0x30 */ 124 MMAL_PARAMETER_ISO, /**< @ref MMAL_PARAMETER_UINT32_T */ 125 MMAL_PARAMETER_ANTISHAKE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 126 127 /** @ref MMAL_PARAMETER_IMAGEFX_PARAMETERS_T */ 128 MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, 129 130 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 131 MMAL_PARAMETER_CAMERA_BURST_CAPTURE, 132 133 /** @ref MMAL_PARAMETER_UINT32_T */ 134 MMAL_PARAMETER_CAMERA_MIN_ISO, 135 136 /** @ref MMAL_PARAMETER_CAMERA_USE_CASE_T */ 137 MMAL_PARAMETER_CAMERA_USE_CASE, 138 139 /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 140 MMAL_PARAMETER_CAPTURE_STATS_PASS, 141 142 /** @ref MMAL_PARAMETER_UINT32_T */ 143 MMAL_PARAMETER_CAMERA_CUSTOM_SENSOR_CONFIG, 144 145 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 146 MMAL_PARAMETER_ENABLE_REGISTER_FILE, 147 148 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 149 MMAL_PARAMETER_REGISTER_FAIL_IS_FATAL, 150 151 /** @ref MMAL_PARAMETER_CONFIGFILE_T */ 152 MMAL_PARAMETER_CONFIGFILE_REGISTERS, 153 154 /** @ref MMAL_PARAMETER_CONFIGFILE_CHUNK_T */ 155 MMAL_PARAMETER_CONFIGFILE_CHUNK_REGISTERS, 156 MMAL_PARAMETER_JPEG_ATTACH_LOG, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 157 MMAL_PARAMETER_ZERO_SHUTTER_LAG, /**< @ref MMAL_PARAMETER_ZEROSHUTTERLAG_T */ 158 MMAL_PARAMETER_FPS_RANGE, /**< @ref MMAL_PARAMETER_FPS_RANGE_T */ 159 MMAL_PARAMETER_CAPTURE_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */ 160 161 /* 0x40 */ 162 MMAL_PARAMETER_SW_SHARPEN_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 163 MMAL_PARAMETER_FLASH_REQUIRED, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 164 MMAL_PARAMETER_SW_SATURATION_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 165 MMAL_PARAMETER_SHUTTER_SPEED, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ 166 MMAL_PARAMETER_CUSTOM_AWB_GAINS, /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */ 167 }; 168 169 struct mmal_parameter_rational { 170 s32 num; /**< Numerator */ 171 s32 den; /**< Denominator */ 172 }; 173 174 enum mmal_parameter_camera_config_timestamp_mode { 175 MMAL_PARAM_TIMESTAMP_MODE_ZERO = 0, /* Always timestamp frames as 0 */ 176 MMAL_PARAM_TIMESTAMP_MODE_RAW_STC, /* Use the raw STC value 177 * for the frame timestamp 178 */ 179 MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp 180 * but subtract the 181 * timestamp of the first 182 * frame sent to give a 183 * zero based timestamp. 184 */ 185 }; 186 187 struct mmal_parameter_fps_range { 188 /**< Low end of the permitted framerate range */ 189 struct mmal_parameter_rational fps_low; 190 /**< High end of the permitted framerate range */ 191 struct mmal_parameter_rational fps_high; 192 }; 193 194 /* camera configuration parameter */ 195 struct mmal_parameter_camera_config { 196 /* Parameters for setting up the image pools */ 197 u32 max_stills_w; /* Max size of stills capture */ 198 u32 max_stills_h; 199 u32 stills_yuv422; /* Allow YUV422 stills capture */ 200 u32 one_shot_stills; /* Continuous or one shot stills captures. */ 201 202 u32 max_preview_video_w; /* Max size of the preview or video 203 * capture frames 204 */ 205 u32 max_preview_video_h; 206 u32 num_preview_video_frames; 207 208 /** Sets the height of the circular buffer for stills capture. */ 209 u32 stills_capture_circular_buffer_height; 210 211 /** Allows preview/encode to resume as fast as possible after the stills 212 * input frame has been received, and then processes the still frame in 213 * the background whilst preview/encode has resumed. 214 * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE. 215 */ 216 u32 fast_preview_resume; 217 218 /** Selects algorithm for timestamping frames if 219 * there is no clock component connected. 220 * enum mmal_parameter_camera_config_timestamp_mode 221 */ 222 s32 use_stc_timestamp; 223 }; 224 225 enum mmal_parameter_exposuremode { 226 MMAL_PARAM_EXPOSUREMODE_OFF, 227 MMAL_PARAM_EXPOSUREMODE_AUTO, 228 MMAL_PARAM_EXPOSUREMODE_NIGHT, 229 MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW, 230 MMAL_PARAM_EXPOSUREMODE_BACKLIGHT, 231 MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT, 232 MMAL_PARAM_EXPOSUREMODE_SPORTS, 233 MMAL_PARAM_EXPOSUREMODE_SNOW, 234 MMAL_PARAM_EXPOSUREMODE_BEACH, 235 MMAL_PARAM_EXPOSUREMODE_VERYLONG, 236 MMAL_PARAM_EXPOSUREMODE_FIXEDFPS, 237 MMAL_PARAM_EXPOSUREMODE_ANTISHAKE, 238 MMAL_PARAM_EXPOSUREMODE_FIREWORKS, 239 }; 240 241 enum mmal_parameter_exposuremeteringmode { 242 MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE, 243 MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT, 244 MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT, 245 MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX, 246 }; 247 248 enum mmal_parameter_awbmode { 249 MMAL_PARAM_AWBMODE_OFF, 250 MMAL_PARAM_AWBMODE_AUTO, 251 MMAL_PARAM_AWBMODE_SUNLIGHT, 252 MMAL_PARAM_AWBMODE_CLOUDY, 253 MMAL_PARAM_AWBMODE_SHADE, 254 MMAL_PARAM_AWBMODE_TUNGSTEN, 255 MMAL_PARAM_AWBMODE_FLUORESCENT, 256 MMAL_PARAM_AWBMODE_INCANDESCENT, 257 MMAL_PARAM_AWBMODE_FLASH, 258 MMAL_PARAM_AWBMODE_HORIZON, 259 }; 260 261 enum mmal_parameter_imagefx { 262 MMAL_PARAM_IMAGEFX_NONE, 263 MMAL_PARAM_IMAGEFX_NEGATIVE, 264 MMAL_PARAM_IMAGEFX_SOLARIZE, 265 MMAL_PARAM_IMAGEFX_POSTERIZE, 266 MMAL_PARAM_IMAGEFX_WHITEBOARD, 267 MMAL_PARAM_IMAGEFX_BLACKBOARD, 268 MMAL_PARAM_IMAGEFX_SKETCH, 269 MMAL_PARAM_IMAGEFX_DENOISE, 270 MMAL_PARAM_IMAGEFX_EMBOSS, 271 MMAL_PARAM_IMAGEFX_OILPAINT, 272 MMAL_PARAM_IMAGEFX_HATCH, 273 MMAL_PARAM_IMAGEFX_GPEN, 274 MMAL_PARAM_IMAGEFX_PASTEL, 275 MMAL_PARAM_IMAGEFX_WATERCOLOUR, 276 MMAL_PARAM_IMAGEFX_FILM, 277 MMAL_PARAM_IMAGEFX_BLUR, 278 MMAL_PARAM_IMAGEFX_SATURATION, 279 MMAL_PARAM_IMAGEFX_COLOURSWAP, 280 MMAL_PARAM_IMAGEFX_WASHEDOUT, 281 MMAL_PARAM_IMAGEFX_POSTERISE, 282 MMAL_PARAM_IMAGEFX_COLOURPOINT, 283 MMAL_PARAM_IMAGEFX_COLOURBALANCE, 284 MMAL_PARAM_IMAGEFX_CARTOON, 285 }; 286 287 enum MMAL_PARAM_FLICKERAVOID_T { 288 MMAL_PARAM_FLICKERAVOID_OFF, 289 MMAL_PARAM_FLICKERAVOID_AUTO, 290 MMAL_PARAM_FLICKERAVOID_50HZ, 291 MMAL_PARAM_FLICKERAVOID_60HZ, 292 MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF 293 }; 294 295 struct mmal_parameter_awbgains { 296 struct mmal_parameter_rational r_gain; /**< Red gain */ 297 struct mmal_parameter_rational b_gain; /**< Blue gain */ 298 }; 299 300 /** Manner of video rate control */ 301 enum mmal_parameter_rate_control_mode { 302 MMAL_VIDEO_RATECONTROL_DEFAULT, 303 MMAL_VIDEO_RATECONTROL_VARIABLE, 304 MMAL_VIDEO_RATECONTROL_CONSTANT, 305 MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES, 306 MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES 307 }; 308 309 enum mmal_video_profile { 310 MMAL_VIDEO_PROFILE_H263_BASELINE, 311 MMAL_VIDEO_PROFILE_H263_H320CODING, 312 MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE, 313 MMAL_VIDEO_PROFILE_H263_ISWV2, 314 MMAL_VIDEO_PROFILE_H263_ISWV3, 315 MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION, 316 MMAL_VIDEO_PROFILE_H263_INTERNET, 317 MMAL_VIDEO_PROFILE_H263_INTERLACE, 318 MMAL_VIDEO_PROFILE_H263_HIGHLATENCY, 319 MMAL_VIDEO_PROFILE_MP4V_SIMPLE, 320 MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE, 321 MMAL_VIDEO_PROFILE_MP4V_CORE, 322 MMAL_VIDEO_PROFILE_MP4V_MAIN, 323 MMAL_VIDEO_PROFILE_MP4V_NBIT, 324 MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE, 325 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE, 326 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA, 327 MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED, 328 MMAL_VIDEO_PROFILE_MP4V_HYBRID, 329 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME, 330 MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE, 331 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING, 332 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE, 333 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE, 334 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE, 335 MMAL_VIDEO_PROFILE_H264_BASELINE, 336 MMAL_VIDEO_PROFILE_H264_MAIN, 337 MMAL_VIDEO_PROFILE_H264_EXTENDED, 338 MMAL_VIDEO_PROFILE_H264_HIGH, 339 MMAL_VIDEO_PROFILE_H264_HIGH10, 340 MMAL_VIDEO_PROFILE_H264_HIGH422, 341 MMAL_VIDEO_PROFILE_H264_HIGH444, 342 MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE, 343 MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF 344 }; 345 346 enum mmal_video_level { 347 MMAL_VIDEO_LEVEL_H263_10, 348 MMAL_VIDEO_LEVEL_H263_20, 349 MMAL_VIDEO_LEVEL_H263_30, 350 MMAL_VIDEO_LEVEL_H263_40, 351 MMAL_VIDEO_LEVEL_H263_45, 352 MMAL_VIDEO_LEVEL_H263_50, 353 MMAL_VIDEO_LEVEL_H263_60, 354 MMAL_VIDEO_LEVEL_H263_70, 355 MMAL_VIDEO_LEVEL_MP4V_0, 356 MMAL_VIDEO_LEVEL_MP4V_0b, 357 MMAL_VIDEO_LEVEL_MP4V_1, 358 MMAL_VIDEO_LEVEL_MP4V_2, 359 MMAL_VIDEO_LEVEL_MP4V_3, 360 MMAL_VIDEO_LEVEL_MP4V_4, 361 MMAL_VIDEO_LEVEL_MP4V_4a, 362 MMAL_VIDEO_LEVEL_MP4V_5, 363 MMAL_VIDEO_LEVEL_MP4V_6, 364 MMAL_VIDEO_LEVEL_H264_1, 365 MMAL_VIDEO_LEVEL_H264_1b, 366 MMAL_VIDEO_LEVEL_H264_11, 367 MMAL_VIDEO_LEVEL_H264_12, 368 MMAL_VIDEO_LEVEL_H264_13, 369 MMAL_VIDEO_LEVEL_H264_2, 370 MMAL_VIDEO_LEVEL_H264_21, 371 MMAL_VIDEO_LEVEL_H264_22, 372 MMAL_VIDEO_LEVEL_H264_3, 373 MMAL_VIDEO_LEVEL_H264_31, 374 MMAL_VIDEO_LEVEL_H264_32, 375 MMAL_VIDEO_LEVEL_H264_4, 376 MMAL_VIDEO_LEVEL_H264_41, 377 MMAL_VIDEO_LEVEL_H264_42, 378 MMAL_VIDEO_LEVEL_H264_5, 379 MMAL_VIDEO_LEVEL_H264_51, 380 MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF 381 }; 382 383 struct mmal_parameter_video_profile { 384 enum mmal_video_profile profile; 385 enum mmal_video_level level; 386 }; 387 388 /* video parameters */ 389 390 enum mmal_parameter_video_type { 391 /** @ref MMAL_DISPLAYREGION_T */ 392 MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO, 393 394 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ 395 MMAL_PARAMETER_SUPPORTED_PROFILES, 396 397 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ 398 MMAL_PARAMETER_PROFILE, 399 400 /** @ref MMAL_PARAMETER_UINT32_T */ 401 MMAL_PARAMETER_INTRAPERIOD, 402 403 /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */ 404 MMAL_PARAMETER_RATECONTROL, 405 406 /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */ 407 MMAL_PARAMETER_NALUNITFORMAT, 408 409 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 410 MMAL_PARAMETER_MINIMISE_FRAGMENTATION, 411 412 /** @ref MMAL_PARAMETER_UINT32_T. 413 * Setting the value to zero resets to the default (one slice per frame). 414 */ 415 MMAL_PARAMETER_MB_ROWS_PER_SLICE, 416 417 /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */ 418 MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION, 419 420 /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */ 421 MMAL_PARAMETER_VIDEO_EEDE_ENABLE, 422 423 /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */ 424 MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE, 425 426 /** @ref MMAL_PARAMETER_BOOLEAN_T. Request an I-frame. */ 427 MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, 428 /** @ref MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T */ 429 MMAL_PARAMETER_VIDEO_INTRA_REFRESH, 430 431 /** @ref MMAL_PARAMETER_BOOLEAN_T. */ 432 MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT, 433 434 /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */ 435 MMAL_PARAMETER_VIDEO_BIT_RATE, 436 437 /** @ref MMAL_PARAMETER_FRAME_RATE_T */ 438 MMAL_PARAMETER_VIDEO_FRAME_RATE, 439 440 /** @ref MMAL_PARAMETER_UINT32_T. */ 441 MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT, 442 443 /** @ref MMAL_PARAMETER_UINT32_T. */ 444 MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, 445 446 /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */ 447 MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL, 448 449 MMAL_PARAMETER_EXTRA_BUFFERS, /**< @ref MMAL_PARAMETER_UINT32_T. */ 450 /** @ref MMAL_PARAMETER_UINT32_T. 451 * Changing this parameter from the default can reduce frame rate 452 * because image buffers need to be re-pitched. 453 */ 454 MMAL_PARAMETER_VIDEO_ALIGN_HORIZ, 455 456 /** @ref MMAL_PARAMETER_UINT32_T. 457 * Changing this parameter from the default can reduce frame rate 458 * because image buffers need to be re-pitched. 459 */ 460 MMAL_PARAMETER_VIDEO_ALIGN_VERT, 461 462 /** @ref MMAL_PARAMETER_BOOLEAN_T. */ 463 MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES, 464 465 /** @ref MMAL_PARAMETER_UINT32_T. */ 466 MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT, 467 468 /**< @ref MMAL_PARAMETER_UINT32_T. */ 469 MMAL_PARAMETER_VIDEO_ENCODE_QP_P, 470 471 /**< @ref MMAL_PARAMETER_UINT32_T. */ 472 MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT, 473 474 /** @ref MMAL_PARAMETER_UINT32_T */ 475 MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS, 476 477 /** @ref MMAL_PARAMETER_UINT32_T. */ 478 MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE, 479 480 /* H264 specific parameters */ 481 482 /** @ref MMAL_PARAMETER_BOOLEAN_T. */ 483 MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC, 484 485 /** @ref MMAL_PARAMETER_BOOLEAN_T. */ 486 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY, 487 488 /** @ref MMAL_PARAMETER_BOOLEAN_T. */ 489 MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS, 490 491 /** @ref MMAL_PARAMETER_UINT32_T. */ 492 MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC, 493 494 /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */ 495 MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE, 496 497 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 498 MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN, 499 500 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 501 MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP, 502 503 /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */ 504 MMAL_PARAMETER_VIDEO_DRM_INIT_INFO, 505 506 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 507 MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO, 508 509 /** @ref MMAL_PARAMETER_BOOLEAN_T */ 510 MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT, 511 512 /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */ 513 MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER, 514 515 /** @ref MMAL_PARAMETER_BYTES_T */ 516 MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3, 517 518 /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 519 MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS, 520 521 /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 522 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG, 523 524 /**< @ref MMAL_PARAMETER_BOOLEAN_T */ 525 MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER 526 }; 527 528 /** Valid mirror modes */ 529 enum mmal_parameter_mirror { 530 MMAL_PARAM_MIRROR_NONE, 531 MMAL_PARAM_MIRROR_VERTICAL, 532 MMAL_PARAM_MIRROR_HORIZONTAL, 533 MMAL_PARAM_MIRROR_BOTH, 534 }; 535 536 enum mmal_parameter_displaytransform { 537 MMAL_DISPLAY_ROT0 = 0, 538 MMAL_DISPLAY_MIRROR_ROT0 = 1, 539 MMAL_DISPLAY_MIRROR_ROT180 = 2, 540 MMAL_DISPLAY_ROT180 = 3, 541 MMAL_DISPLAY_MIRROR_ROT90 = 4, 542 MMAL_DISPLAY_ROT270 = 5, 543 MMAL_DISPLAY_ROT90 = 6, 544 MMAL_DISPLAY_MIRROR_ROT270 = 7, 545 }; 546 547 enum mmal_parameter_displaymode { 548 MMAL_DISPLAY_MODE_FILL = 0, 549 MMAL_DISPLAY_MODE_LETTERBOX = 1, 550 }; 551 552 enum mmal_parameter_displayset { 553 MMAL_DISPLAY_SET_NONE = 0, 554 MMAL_DISPLAY_SET_NUM = 1, 555 MMAL_DISPLAY_SET_FULLSCREEN = 2, 556 MMAL_DISPLAY_SET_TRANSFORM = 4, 557 MMAL_DISPLAY_SET_DEST_RECT = 8, 558 MMAL_DISPLAY_SET_SRC_RECT = 0x10, 559 MMAL_DISPLAY_SET_MODE = 0x20, 560 MMAL_DISPLAY_SET_PIXEL = 0x40, 561 MMAL_DISPLAY_SET_NOASPECT = 0x80, 562 MMAL_DISPLAY_SET_LAYER = 0x100, 563 MMAL_DISPLAY_SET_COPYPROTECT = 0x200, 564 MMAL_DISPLAY_SET_ALPHA = 0x400, 565 }; 566 567 struct mmal_parameter_displayregion { 568 /** Bitfield that indicates which fields are set and should be 569 * used. All other fields will maintain their current value. 570 * \ref MMAL_DISPLAYSET_T defines the bits that can be 571 * combined. 572 */ 573 u32 set; 574 575 /** Describes the display output device, with 0 typically 576 * being a directly connected LCD display. The actual values 577 * will depend on the hardware. Code using hard-wired numbers 578 * (e.g. 2) is certain to fail. 579 */ 580 581 u32 display_num; 582 /** Indicates that we are using the full device screen area, 583 * rather than a window of the display. If zero, then 584 * dest_rect is used to specify a region of the display to 585 * use. 586 */ 587 588 s32 fullscreen; 589 /** Indicates any rotation or flipping used to map frames onto 590 * the natural display orientation. 591 */ 592 u32 transform; /* enum mmal_parameter_displaytransform */ 593 594 /** Where to display the frame within the screen, if 595 * fullscreen is zero. 596 */ 597 struct vchiq_mmal_rect dest_rect; 598 599 /** Indicates which area of the frame to display. If all 600 * values are zero, the whole frame will be used. 601 */ 602 struct vchiq_mmal_rect src_rect; 603 604 /** If set to non-zero, indicates that any display scaling 605 * should disregard the aspect ratio of the frame region being 606 * displayed. 607 */ 608 s32 noaspect; 609 610 /** Indicates how the image should be scaled to fit the 611 * display. \code MMAL_DISPLAY_MODE_FILL \endcode indicates 612 * that the image should fill the screen by potentially 613 * cropping the frames. Setting \code mode \endcode to \code 614 * MMAL_DISPLAY_MODE_LETTERBOX \endcode indicates that all the 615 * source region should be displayed and black bars added if 616 * necessary. 617 */ 618 u32 mode; /* enum mmal_parameter_displaymode */ 619 620 /** If non-zero, defines the width of a source pixel relative 621 * to \code pixel_y \endcode. If zero, then pixels default to 622 * being square. 623 */ 624 u32 pixel_x; 625 626 /** If non-zero, defines the height of a source pixel relative 627 * to \code pixel_x \endcode. If zero, then pixels default to 628 * being square. 629 */ 630 u32 pixel_y; 631 632 /** Sets the relative depth of the images, with greater values 633 * being in front of smaller values. 634 */ 635 u32 layer; 636 637 /** Set to non-zero to ensure copy protection is used on 638 * output. 639 */ 640 s32 copyprotect_required; 641 642 /** Level of opacity of the layer, where zero is fully 643 * transparent and 255 is fully opaque. 644 */ 645 u32 alpha; 646 }; 647 648 #define MMAL_MAX_IMAGEFX_PARAMETERS 5 649 650 struct mmal_parameter_imagefx_parameters { 651 enum mmal_parameter_imagefx effect; 652 u32 num_effect_params; 653 u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS]; 654 }; 655 656 #define MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS 4 657 #define MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES 2 658 #define MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN 16 659 660 struct mmal_parameter_camera_info_camera_t { 661 u32 port_id; 662 u32 max_width; 663 u32 max_height; 664 u32 lens_present; 665 u8 camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN]; 666 }; 667 668 enum mmal_parameter_camera_info_flash_type_t { 669 /* Make values explicit to ensure they match values in config ini */ 670 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_XENON = 0, 671 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_LED = 1, 672 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_OTHER = 2, 673 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_MAX = 0x7FFFFFFF 674 }; 675 676 struct mmal_parameter_camera_info_flash_t { 677 enum mmal_parameter_camera_info_flash_type_t flash_type; 678 }; 679 680 struct mmal_parameter_camera_info_t { 681 u32 num_cameras; 682 u32 num_flashes; 683 struct mmal_parameter_camera_info_camera_t 684 cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS]; 685 struct mmal_parameter_camera_info_flash_t 686 flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES]; 687 }; 688