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