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