1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Broadcom BM2835 V4L2 driver
5 * Copyright © 2013 Raspberry Pi (Trading) Ltd.
7 * Authors: Vincent Sanders @ Collabora
8 * Dave Stevenson @ Broadcom
9 * (now dave.stevenson@raspberrypi.org)
10 * Simon Mellor @ Broadcom
11 * Luke Diamand @ Broadcom
14 /* common parameters */
16 /** @name Parameter groups
17 * Parameters are divided into groups, and then allocated sequentially within
18 * a group using an enum.
22 #ifndef MMAL_PARAMETERS_H
23 #define MMAL_PARAMETERS_H
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)
38 /* Common parameters */
39 enum mmal_parameter_common_type {
40 /**< Never a valid parameter ID */
41 MMAL_PARAMETER_UNUSED = MMAL_PARAMETER_GROUP_COMMON,
43 /**< MMAL_PARAMETER_ENCODING_T */
44 MMAL_PARAMETER_SUPPORTED_ENCODINGS,
45 /**< MMAL_PARAMETER_URI_T */
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 */
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,
73 /* camera parameters */
75 enum mmal_parameter_camera_type {
77 /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */
78 MMAL_PARAMETER_THUMBNAIL_CONFIGURATION =
79 MMAL_PARAMETER_GROUP_CAMERA,
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 */
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 */
98 /**< @ref MMAL_PARAMETER_REDEYE_T */
99 MMAL_PARAMETER_REDEYE,
100 /**< @ref MMAL_PARAMETER_FOCUS_T */
101 MMAL_PARAMETER_FOCUS,
103 MMAL_PARAMETER_FOCAL_LENGTHS,
104 /**< @ref MMAL_PARAMETER_INT32_T */
105 MMAL_PARAMETER_EXPOSURE_COMP,
106 /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */
108 /**< @ref MMAL_PARAMETER_MIRROR_T */
109 MMAL_PARAMETER_MIRROR,
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,
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,
180 /**< @ref MMAL_PARAMETER_UINT32_T */
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,
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 /**< Takes a @ref MMAL_PARAMETER_CAMERA_SETTINGS_T */
225 MMAL_PARAMETER_CAMERA_SETTINGS,
226 /**< Takes a @ref MMAL_PARAMETER_PRIVACY_INDICATOR_T */
227 MMAL_PARAMETER_PRIVACY_INDICATOR,
228 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
229 MMAL_PARAMETER_VIDEO_DENOISE,
230 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
231 MMAL_PARAMETER_STILLS_DENOISE,
232 /**< Takes a @ref MMAL_PARAMETER_CAMERA_ANNOTATE_T */
233 MMAL_PARAMETER_ANNOTATE,
234 /**< Takes a @ref MMAL_PARAMETER_STEREOSCOPIC_MODE_T */
235 MMAL_PARAMETER_STEREOSCOPIC_MODE,
236 /**< Takes a @ref MMAL_PARAMETER_CAMERA_INTERFACE_T */
237 MMAL_PARAMETER_CAMERA_INTERFACE,
238 /**< Takes a @ref MMAL_PARAMETER_CAMERA_CLOCKING_MODE_T */
239 MMAL_PARAMETER_CAMERA_CLOCKING_MODE,
240 /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_CONFIG_T */
241 MMAL_PARAMETER_CAMERA_RX_CONFIG,
242 /**< Takes a @ref MMAL_PARAMETER_CAMERA_RX_TIMING_T */
243 MMAL_PARAMETER_CAMERA_RX_TIMING,
244 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
245 MMAL_PARAMETER_DPF_CONFIG,
248 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
249 MMAL_PARAMETER_JPEG_RESTART_INTERVAL,
250 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
251 MMAL_PARAMETER_CAMERA_ISP_BLOCK_OVERRIDE,
252 /**< Takes a @ref MMAL_PARAMETER_LENS_SHADING_T */
253 MMAL_PARAMETER_LENS_SHADING_OVERRIDE,
254 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
255 MMAL_PARAMETER_BLACK_LEVEL,
256 /**< Takes a @ref MMAL_PARAMETER_RESIZE_T */
257 MMAL_PARAMETER_RESIZE_PARAMS,
258 /**< Takes a @ref MMAL_PARAMETER_CROP_T */
260 /**< Takes a @ref MMAL_PARAMETER_INT32_T */
261 MMAL_PARAMETER_OUTPUT_SHIFT,
262 /**< Takes a @ref MMAL_PARAMETER_INT32_T */
263 MMAL_PARAMETER_CCM_SHIFT,
264 /**< Takes a @ref MMAL_PARAMETER_CUSTOM_CCM_T */
265 MMAL_PARAMETER_CUSTOM_CCM,
266 /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */
267 MMAL_PARAMETER_ANALOG_GAIN,
268 /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */
269 MMAL_PARAMETER_DIGITAL_GAIN,
270 /**< Takes a @ref MMAL_PARAMETER_DENOISE_T */
271 MMAL_PARAMETER_DENOISE,
272 /**< Takes a @ref MMAL_PARAMETER_SHARPEN_T */
273 MMAL_PARAMETER_SHARPEN,
274 /**< Takes a @ref MMAL_PARAMETER_GEQ_T */
276 /**< Tales a @ref MMAP_PARAMETER_DPC_T */
278 /**< Tales a @ref MMAP_PARAMETER_GAMMA_T */
279 MMAL_PARAMETER_GAMMA,
280 /**< Takes a @ref MMAL_PARAMETER_CDN_T */
282 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
283 MMAL_PARAMETER_JPEG_IJG_SCALING,
286 struct mmal_parameter_rational {
287 s32 num; /**< Numerator */
288 s32 den; /**< Denominator */
291 enum mmal_parameter_camera_config_timestamp_mode {
292 MMAL_PARAM_TIMESTAMP_MODE_ZERO = 0, /* Always timestamp frames as 0 */
293 MMAL_PARAM_TIMESTAMP_MODE_RAW_STC, /* Use the raw STC value
294 * for the frame timestamp
296 MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp
298 * timestamp of the first
299 * frame sent to give a
300 * zero based timestamp.
304 struct mmal_parameter_fps_range {
305 /**< Low end of the permitted framerate range */
306 struct mmal_parameter_rational fps_low;
307 /**< High end of the permitted framerate range */
308 struct mmal_parameter_rational fps_high;
311 /* camera configuration parameter */
312 struct mmal_parameter_camera_config {
313 /* Parameters for setting up the image pools */
314 u32 max_stills_w; /* Max size of stills capture */
316 u32 stills_yuv422; /* Allow YUV422 stills capture */
317 u32 one_shot_stills; /* Continuous or one shot stills captures. */
319 u32 max_preview_video_w; /* Max size of the preview or video
322 u32 max_preview_video_h;
323 u32 num_preview_video_frames;
325 /** Sets the height of the circular buffer for stills capture. */
326 u32 stills_capture_circular_buffer_height;
328 /** Allows preview/encode to resume as fast as possible after the stills
329 * input frame has been received, and then processes the still frame in
330 * the background whilst preview/encode has resumed.
331 * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE.
333 u32 fast_preview_resume;
335 /** Selects algorithm for timestamping frames if
336 * there is no clock component connected.
337 * enum mmal_parameter_camera_config_timestamp_mode
339 s32 use_stc_timestamp;
342 enum mmal_parameter_exposuremode {
343 MMAL_PARAM_EXPOSUREMODE_OFF,
344 MMAL_PARAM_EXPOSUREMODE_AUTO,
345 MMAL_PARAM_EXPOSUREMODE_NIGHT,
346 MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW,
347 MMAL_PARAM_EXPOSUREMODE_BACKLIGHT,
348 MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT,
349 MMAL_PARAM_EXPOSUREMODE_SPORTS,
350 MMAL_PARAM_EXPOSUREMODE_SNOW,
351 MMAL_PARAM_EXPOSUREMODE_BEACH,
352 MMAL_PARAM_EXPOSUREMODE_VERYLONG,
353 MMAL_PARAM_EXPOSUREMODE_FIXEDFPS,
354 MMAL_PARAM_EXPOSUREMODE_ANTISHAKE,
355 MMAL_PARAM_EXPOSUREMODE_FIREWORKS,
358 enum mmal_parameter_exposuremeteringmode {
359 MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE,
360 MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT,
361 MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT,
362 MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX,
365 enum mmal_parameter_awbmode {
366 MMAL_PARAM_AWBMODE_OFF,
367 MMAL_PARAM_AWBMODE_AUTO,
368 MMAL_PARAM_AWBMODE_SUNLIGHT,
369 MMAL_PARAM_AWBMODE_CLOUDY,
370 MMAL_PARAM_AWBMODE_SHADE,
371 MMAL_PARAM_AWBMODE_TUNGSTEN,
372 MMAL_PARAM_AWBMODE_FLUORESCENT,
373 MMAL_PARAM_AWBMODE_INCANDESCENT,
374 MMAL_PARAM_AWBMODE_FLASH,
375 MMAL_PARAM_AWBMODE_HORIZON,
376 MMAL_PARAM_AWBMODE_GREYWORLD,
379 enum mmal_parameter_imagefx {
380 MMAL_PARAM_IMAGEFX_NONE,
381 MMAL_PARAM_IMAGEFX_NEGATIVE,
382 MMAL_PARAM_IMAGEFX_SOLARIZE,
383 MMAL_PARAM_IMAGEFX_POSTERIZE,
384 MMAL_PARAM_IMAGEFX_WHITEBOARD,
385 MMAL_PARAM_IMAGEFX_BLACKBOARD,
386 MMAL_PARAM_IMAGEFX_SKETCH,
387 MMAL_PARAM_IMAGEFX_DENOISE,
388 MMAL_PARAM_IMAGEFX_EMBOSS,
389 MMAL_PARAM_IMAGEFX_OILPAINT,
390 MMAL_PARAM_IMAGEFX_HATCH,
391 MMAL_PARAM_IMAGEFX_GPEN,
392 MMAL_PARAM_IMAGEFX_PASTEL,
393 MMAL_PARAM_IMAGEFX_WATERCOLOUR,
394 MMAL_PARAM_IMAGEFX_FILM,
395 MMAL_PARAM_IMAGEFX_BLUR,
396 MMAL_PARAM_IMAGEFX_SATURATION,
397 MMAL_PARAM_IMAGEFX_COLOURSWAP,
398 MMAL_PARAM_IMAGEFX_WASHEDOUT,
399 MMAL_PARAM_IMAGEFX_POSTERISE,
400 MMAL_PARAM_IMAGEFX_COLOURPOINT,
401 MMAL_PARAM_IMAGEFX_COLOURBALANCE,
402 MMAL_PARAM_IMAGEFX_CARTOON,
403 MMAL_PARAM_IMAGEFX_DEINTERLACE_DOUBLE,
404 MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV,
405 MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST,
408 enum MMAL_PARAM_FLICKERAVOID {
409 MMAL_PARAM_FLICKERAVOID_OFF,
410 MMAL_PARAM_FLICKERAVOID_AUTO,
411 MMAL_PARAM_FLICKERAVOID_50HZ,
412 MMAL_PARAM_FLICKERAVOID_60HZ,
413 MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF
416 struct mmal_parameter_awbgains {
417 struct mmal_parameter_rational r_gain; /**< Red gain */
418 struct mmal_parameter_rational b_gain; /**< Blue gain */
421 /** Manner of video rate control */
422 enum mmal_parameter_rate_control_mode {
423 MMAL_VIDEO_RATECONTROL_DEFAULT,
424 MMAL_VIDEO_RATECONTROL_VARIABLE,
425 MMAL_VIDEO_RATECONTROL_CONSTANT,
426 MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES,
427 MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES
430 enum mmal_video_profile {
431 MMAL_VIDEO_PROFILE_H263_BASELINE,
432 MMAL_VIDEO_PROFILE_H263_H320CODING,
433 MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE,
434 MMAL_VIDEO_PROFILE_H263_ISWV2,
435 MMAL_VIDEO_PROFILE_H263_ISWV3,
436 MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION,
437 MMAL_VIDEO_PROFILE_H263_INTERNET,
438 MMAL_VIDEO_PROFILE_H263_INTERLACE,
439 MMAL_VIDEO_PROFILE_H263_HIGHLATENCY,
440 MMAL_VIDEO_PROFILE_MP4V_SIMPLE,
441 MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE,
442 MMAL_VIDEO_PROFILE_MP4V_CORE,
443 MMAL_VIDEO_PROFILE_MP4V_MAIN,
444 MMAL_VIDEO_PROFILE_MP4V_NBIT,
445 MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE,
446 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE,
447 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA,
448 MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED,
449 MMAL_VIDEO_PROFILE_MP4V_HYBRID,
450 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME,
451 MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE,
452 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING,
453 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE,
454 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE,
455 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE,
456 MMAL_VIDEO_PROFILE_H264_BASELINE,
457 MMAL_VIDEO_PROFILE_H264_MAIN,
458 MMAL_VIDEO_PROFILE_H264_EXTENDED,
459 MMAL_VIDEO_PROFILE_H264_HIGH,
460 MMAL_VIDEO_PROFILE_H264_HIGH10,
461 MMAL_VIDEO_PROFILE_H264_HIGH422,
462 MMAL_VIDEO_PROFILE_H264_HIGH444,
463 MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE,
464 MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF
467 enum mmal_video_level {
468 MMAL_VIDEO_LEVEL_H263_10,
469 MMAL_VIDEO_LEVEL_H263_20,
470 MMAL_VIDEO_LEVEL_H263_30,
471 MMAL_VIDEO_LEVEL_H263_40,
472 MMAL_VIDEO_LEVEL_H263_45,
473 MMAL_VIDEO_LEVEL_H263_50,
474 MMAL_VIDEO_LEVEL_H263_60,
475 MMAL_VIDEO_LEVEL_H263_70,
476 MMAL_VIDEO_LEVEL_MP4V_0,
477 MMAL_VIDEO_LEVEL_MP4V_0b,
478 MMAL_VIDEO_LEVEL_MP4V_1,
479 MMAL_VIDEO_LEVEL_MP4V_2,
480 MMAL_VIDEO_LEVEL_MP4V_3,
481 MMAL_VIDEO_LEVEL_MP4V_4,
482 MMAL_VIDEO_LEVEL_MP4V_4a,
483 MMAL_VIDEO_LEVEL_MP4V_5,
484 MMAL_VIDEO_LEVEL_MP4V_6,
485 MMAL_VIDEO_LEVEL_H264_1,
486 MMAL_VIDEO_LEVEL_H264_1b,
487 MMAL_VIDEO_LEVEL_H264_11,
488 MMAL_VIDEO_LEVEL_H264_12,
489 MMAL_VIDEO_LEVEL_H264_13,
490 MMAL_VIDEO_LEVEL_H264_2,
491 MMAL_VIDEO_LEVEL_H264_21,
492 MMAL_VIDEO_LEVEL_H264_22,
493 MMAL_VIDEO_LEVEL_H264_3,
494 MMAL_VIDEO_LEVEL_H264_31,
495 MMAL_VIDEO_LEVEL_H264_32,
496 MMAL_VIDEO_LEVEL_H264_4,
497 MMAL_VIDEO_LEVEL_H264_41,
498 MMAL_VIDEO_LEVEL_H264_42,
499 MMAL_VIDEO_LEVEL_H264_5,
500 MMAL_VIDEO_LEVEL_H264_51,
501 MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF
504 struct mmal_parameter_video_profile {
505 enum mmal_video_profile profile;
506 enum mmal_video_level level;
509 /* video parameters */
511 enum mmal_parameter_video_type {
512 /** @ref MMAL_DISPLAYREGION_T */
513 MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO,
515 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
516 MMAL_PARAMETER_SUPPORTED_PROFILES,
518 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
519 MMAL_PARAMETER_PROFILE,
521 /** @ref MMAL_PARAMETER_UINT32_T */
522 MMAL_PARAMETER_INTRAPERIOD,
524 /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */
525 MMAL_PARAMETER_RATECONTROL,
527 /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */
528 MMAL_PARAMETER_NALUNITFORMAT,
530 /** @ref MMAL_PARAMETER_BOOLEAN_T */
531 MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
533 /** @ref MMAL_PARAMETER_UINT32_T.
534 * Setting the value to zero resets to the default (one slice per
537 MMAL_PARAMETER_MB_ROWS_PER_SLICE,
539 /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */
540 MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION,
542 /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */
543 MMAL_PARAMETER_VIDEO_EEDE_ENABLE,
545 /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */
546 MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE,
548 /** @ref MMAL_PARAMETER_BOOLEAN_T. Request an I-frame. */
549 MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME,
550 /** @ref MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T */
551 MMAL_PARAMETER_VIDEO_INTRA_REFRESH,
553 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
554 MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
556 /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */
557 MMAL_PARAMETER_VIDEO_BIT_RATE,
559 /** @ref MMAL_PARAMETER_FRAME_RATE_T */
560 MMAL_PARAMETER_VIDEO_FRAME_RATE,
562 /** @ref MMAL_PARAMETER_UINT32_T. */
563 MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT,
565 /** @ref MMAL_PARAMETER_UINT32_T. */
566 MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT,
568 /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */
569 MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL,
571 MMAL_PARAMETER_EXTRA_BUFFERS, /**< @ref MMAL_PARAMETER_UINT32_T. */
572 /** @ref MMAL_PARAMETER_UINT32_T.
573 * Changing this parameter from the default can reduce frame rate
574 * because image buffers need to be re-pitched.
576 MMAL_PARAMETER_VIDEO_ALIGN_HORIZ,
578 /** @ref MMAL_PARAMETER_UINT32_T.
579 * Changing this parameter from the default can reduce frame rate
580 * because image buffers need to be re-pitched.
582 MMAL_PARAMETER_VIDEO_ALIGN_VERT,
584 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
585 MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES,
587 /** @ref MMAL_PARAMETER_UINT32_T. */
588 MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT,
590 /**< @ref MMAL_PARAMETER_UINT32_T. */
591 MMAL_PARAMETER_VIDEO_ENCODE_QP_P,
593 /**< @ref MMAL_PARAMETER_UINT32_T. */
594 MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT,
596 /** @ref MMAL_PARAMETER_UINT32_T */
597 MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS,
599 /** @ref MMAL_PARAMETER_UINT32_T. */
600 MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE,
602 /* H264 specific parameters */
604 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
605 MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC,
607 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
608 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY,
610 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
611 MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS,
613 /** @ref MMAL_PARAMETER_UINT32_T. */
614 MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC,
616 /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */
617 MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE,
619 /** @ref MMAL_PARAMETER_BOOLEAN_T */
620 MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN,
622 /** @ref MMAL_PARAMETER_BOOLEAN_T */
623 MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP,
625 /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */
626 MMAL_PARAMETER_VIDEO_DRM_INIT_INFO,
628 /** @ref MMAL_PARAMETER_BOOLEAN_T */
629 MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO,
631 /** @ref MMAL_PARAMETER_BOOLEAN_T */
632 MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT,
634 /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */
635 MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER,
637 /** @ref MMAL_PARAMETER_BYTES_T */
638 MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3,
640 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
641 MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS,
643 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
644 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG,
646 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
647 MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER,
649 /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T. */
650 MMAL_PARAMETER_VIDEO_ENCODE_SEI_ENABLE,
652 /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T. */
653 MMAL_PARAMETER_VIDEO_ENCODE_INLINE_VECTORS,
655 /**< Take a @ref MMAL_PARAMETER_VIDEO_RENDER_STATS_T. */
656 MMAL_PARAMETER_VIDEO_RENDER_STATS,
658 /**< Take a @ref MMAL_PARAMETER_VIDEO_INTERLACE_TYPE_T. */
659 MMAL_PARAMETER_VIDEO_INTERLACE_TYPE,
661 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
662 MMAL_PARAMETER_VIDEO_INTERPOLATE_TIMESTAMPS,
664 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
665 MMAL_PARAMETER_VIDEO_ENCODE_SPS_TIMING,
667 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
668 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS,
670 /**< Takes a @ref MMAL_PARAMETER_SOURCE_PATTERN_T */
671 MMAL_PARAMETER_VIDEO_SOURCE_PATTERN,
673 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
674 MMAL_PARAMETER_VIDEO_ENCODE_SEPARATE_NAL_BUFS,
676 /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
677 MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAME_LENGTH,
679 /**< Take a @ref MMAL_PARAMETER_VIDEO_STALL_T */
680 MMAL_PARAMETER_VIDEO_STALL_THRESHOLD,
682 /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
683 MMAL_PARAMETER_VIDEO_ENCODE_HEADERS_WITH_FRAME,
685 /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
686 MMAL_PARAMETER_VIDEO_VALIDATE_TIMESTAMPS,
688 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
689 MMAL_PARAMETER_VIDEO_STOP_ON_PAR_COLOUR_CHANGE,
692 /** Valid mirror modes */
693 enum mmal_parameter_mirror {
694 MMAL_PARAM_MIRROR_NONE,
695 MMAL_PARAM_MIRROR_VERTICAL,
696 MMAL_PARAM_MIRROR_HORIZONTAL,
697 MMAL_PARAM_MIRROR_BOTH,
700 enum mmal_parameter_displaytransform {
701 MMAL_DISPLAY_ROT0 = 0,
702 MMAL_DISPLAY_MIRROR_ROT0 = 1,
703 MMAL_DISPLAY_MIRROR_ROT180 = 2,
704 MMAL_DISPLAY_ROT180 = 3,
705 MMAL_DISPLAY_MIRROR_ROT90 = 4,
706 MMAL_DISPLAY_ROT270 = 5,
707 MMAL_DISPLAY_ROT90 = 6,
708 MMAL_DISPLAY_MIRROR_ROT270 = 7,
711 enum mmal_parameter_displaymode {
712 MMAL_DISPLAY_MODE_FILL = 0,
713 MMAL_DISPLAY_MODE_LETTERBOX = 1,
716 enum mmal_parameter_displayset {
717 MMAL_DISPLAY_SET_NONE = 0,
718 MMAL_DISPLAY_SET_NUM = 1,
719 MMAL_DISPLAY_SET_FULLSCREEN = 2,
720 MMAL_DISPLAY_SET_TRANSFORM = 4,
721 MMAL_DISPLAY_SET_DEST_RECT = 8,
722 MMAL_DISPLAY_SET_SRC_RECT = 0x10,
723 MMAL_DISPLAY_SET_MODE = 0x20,
724 MMAL_DISPLAY_SET_PIXEL = 0x40,
725 MMAL_DISPLAY_SET_NOASPECT = 0x80,
726 MMAL_DISPLAY_SET_LAYER = 0x100,
727 MMAL_DISPLAY_SET_COPYPROTECT = 0x200,
728 MMAL_DISPLAY_SET_ALPHA = 0x400,
731 /* rectangle, used lots so it gets its own struct */
732 struct vchiq_mmal_rect {
739 struct mmal_parameter_displayregion {
740 /** Bitfield that indicates which fields are set and should be
741 * used. All other fields will maintain their current value.
742 * \ref MMAL_DISPLAYSET_T defines the bits that can be
747 /** Describes the display output device, with 0 typically
748 * being a directly connected LCD display. The actual values
749 * will depend on the hardware. Code using hard-wired numbers
750 * (e.g. 2) is certain to fail.
754 /** Indicates that we are using the full device screen area,
755 * rather than a window of the display. If zero, then
756 * dest_rect is used to specify a region of the display to
761 /** Indicates any rotation or flipping used to map frames onto
762 * the natural display orientation.
764 u32 transform; /* enum mmal_parameter_displaytransform */
766 /** Where to display the frame within the screen, if
767 * fullscreen is zero.
769 struct vchiq_mmal_rect dest_rect;
771 /** Indicates which area of the frame to display. If all
772 * values are zero, the whole frame will be used.
774 struct vchiq_mmal_rect src_rect;
776 /** If set to non-zero, indicates that any display scaling
777 * should disregard the aspect ratio of the frame region being
782 /** Indicates how the image should be scaled to fit the
783 * display. \code MMAL_DISPLAY_MODE_FILL \endcode indicates
784 * that the image should fill the screen by potentially
785 * cropping the frames. Setting \code mode \endcode to \code
786 * MMAL_DISPLAY_MODE_LETTERBOX \endcode indicates that all the
787 * source region should be displayed and black bars added if
790 u32 mode; /* enum mmal_parameter_displaymode */
792 /** If non-zero, defines the width of a source pixel relative
793 * to \code pixel_y \endcode. If zero, then pixels default to
798 /** If non-zero, defines the height of a source pixel relative
799 * to \code pixel_x \endcode. If zero, then pixels default to
804 /** Sets the relative depth of the images, with greater values
805 * being in front of smaller values.
809 /** Set to non-zero to ensure copy protection is used on
812 s32 copyprotect_required;
814 /** Level of opacity of the layer, where zero is fully
815 * transparent and 255 is fully opaque.
820 enum mmal_interlace_type {
821 /* The data is not interlaced, it is progressive scan */
822 MMAL_INTERLACE_PROGRESSIVE,
824 * The data is interlaced, fields sent separately in temporal order, with
827 MMAL_INTERLACE_FIELD_SINGLE_UPPER_FIRST,
829 * The data is interlaced, fields sent separately in temporal order, with
832 MMAL_INTERLACE_FIELD_SINGLE_LOWER_FIRST,
834 * The data is interlaced, two fields sent together line interleaved,
835 * with the upper field temporally earlier
837 MMAL_INTERLACE_FIELDS_INTERLEAVED_UPPER_FIRST,
839 * The data is interlaced, two fields sent together line interleaved,
840 * with the lower field temporally earlier
842 MMAL_INTERLACE_FIELDS_INTERLEAVED_LOWER_FIRST,
844 * The stream may contain a mixture of progressive and interlaced
847 MMAL_INTERLACE_MIXED,
849 MMAL_INTERLACE_DUMMY = 0x7FFFFFFF
852 struct mmal_parameter_video_interlace_type {
853 enum mmal_interlace_type mode; /* The interlace type of the content */
854 u32 bRepeatFirstField; /* Whether to repeat the first field */
857 #define MMAL_MAX_IMAGEFX_PARAMETERS 5
859 struct mmal_parameter_imagefx_parameters {
860 enum mmal_parameter_imagefx effect;
861 u32 num_effect_params;
862 u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS];
865 #define MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS 4
866 #define MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES 2
867 #define MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN 16
869 struct mmal_parameter_camera_info_camera {
874 u8 camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN];
877 enum mmal_parameter_camera_info_flash_type {
878 /* Make values explicit to ensure they match values in config ini */
879 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_XENON = 0,
880 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_LED = 1,
881 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_OTHER = 2,
882 MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_MAX = 0x7FFFFFFF
885 struct mmal_parameter_camera_info_flash {
886 enum mmal_parameter_camera_info_flash_type flash_type;
889 struct mmal_parameter_camera_info {
892 struct mmal_parameter_camera_info_camera
893 cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS];
894 struct mmal_parameter_camera_info_flash
895 flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES];
898 struct mmal_parameter_ccm {
899 struct mmal_parameter_rational ccm[3][3];
903 struct mmal_parameter_custom_ccm {
904 u32 enabled; /**< Enable the custom CCM. */
905 struct mmal_parameter_ccm ccm; /**< CCM to be used. */
908 struct mmal_parameter_lens_shading {
914 u32 mem_handle_table;
918 enum mmal_parameter_ls_gain_format_type {
919 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U0P8_1 = 0,
920 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U1P7_0 = 1,
921 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U1P7_1 = 2,
922 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U2P6_0 = 3,
923 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U2P6_1 = 4,
924 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U3P5_0 = 5,
925 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U3P5_1 = 6,
926 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_U4P10 = 7,
927 MMAL_PARAMETER_LS_GAIN_FORMAT_TYPE_DUMMY = 0x7FFFFFFF
930 struct mmal_parameter_lens_shading_v2 {
936 u32 mem_handle_table;
939 enum mmal_parameter_ls_gain_format_type gain_format;
942 struct mmal_parameter_black_level {
947 u8 pad_[2]; /* Unused */
950 struct mmal_parameter_geq {
953 struct mmal_parameter_rational slope;
956 #define MMAL_NUM_GAMMA_PTS 33
957 struct mmal_parameter_gamma {
959 u16 x[MMAL_NUM_GAMMA_PTS];
960 u16 y[MMAL_NUM_GAMMA_PTS];
963 enum mmal_parameter_cdn_mode {
964 MMAL_PARAM_CDN_FAST = 0,
965 MMAL_PARAM_CDN_HIGH_QUALITY = 1,
966 MMAL_PARAM_CDN_DUMMY = 0x7FFFFFFF
969 struct mmal_parameter_colour_denoise {
971 enum mmal_parameter_cdn_mode mode;
974 struct mmal_parameter_denoise {
977 struct mmal_parameter_rational slope;
978 struct mmal_parameter_rational strength;
981 struct mmal_parameter_sharpen {
983 struct mmal_parameter_rational threshold;
984 struct mmal_parameter_rational strength;
985 struct mmal_parameter_rational limit;
989 MMAL_DPC_MODE_OFF = 0,
990 MMAL_DPC_MODE_NORMAL = 1,
991 MMAL_DPC_MODE_STRONG = 2,
992 MMAL_DPC_MODE_MAX = 0x7FFFFFFF,
995 struct mmal_parameter_dpc {
1000 struct mmal_parameter_crop {
1001 struct vchiq_mmal_rect rect;