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,
226 struct mmal_parameter_rational {
227 s32 num; /**< Numerator */
228 s32 den; /**< Denominator */
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
236 MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp
238 * timestamp of the first
239 * frame sent to give a
240 * zero based timestamp.
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;
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 */
256 u32 stills_yuv422; /* Allow YUV422 stills capture */
257 u32 one_shot_stills; /* Continuous or one shot stills captures. */
259 u32 max_preview_video_w; /* Max size of the preview or video
262 u32 max_preview_video_h;
263 u32 num_preview_video_frames;
265 /** Sets the height of the circular buffer for stills capture. */
266 u32 stills_capture_circular_buffer_height;
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.
273 u32 fast_preview_resume;
275 /** Selects algorithm for timestamping frames if
276 * there is no clock component connected.
277 * enum mmal_parameter_camera_config_timestamp_mode
279 s32 use_stc_timestamp;
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,
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,
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,
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,
344 enum MMAL_PARAM_FLICKERAVOID_T {
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
352 struct mmal_parameter_awbgains {
353 struct mmal_parameter_rational r_gain; /**< Red gain */
354 struct mmal_parameter_rational b_gain; /**< Blue gain */
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
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
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
440 struct mmal_parameter_video_profile {
441 enum mmal_video_profile profile;
442 enum mmal_video_level level;
445 /* video parameters */
447 enum mmal_parameter_video_type {
448 /** @ref MMAL_DISPLAYREGION_T */
449 MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO,
451 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
452 MMAL_PARAMETER_SUPPORTED_PROFILES,
454 /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
455 MMAL_PARAMETER_PROFILE,
457 /** @ref MMAL_PARAMETER_UINT32_T */
458 MMAL_PARAMETER_INTRAPERIOD,
460 /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */
461 MMAL_PARAMETER_RATECONTROL,
463 /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */
464 MMAL_PARAMETER_NALUNITFORMAT,
466 /** @ref MMAL_PARAMETER_BOOLEAN_T */
467 MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
469 /** @ref MMAL_PARAMETER_UINT32_T.
470 * Setting the value to zero resets to the default (one slice per
473 MMAL_PARAMETER_MB_ROWS_PER_SLICE,
475 /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */
476 MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION,
478 /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */
479 MMAL_PARAMETER_VIDEO_EEDE_ENABLE,
481 /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */
482 MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE,
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,
489 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
490 MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
492 /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */
493 MMAL_PARAMETER_VIDEO_BIT_RATE,
495 /** @ref MMAL_PARAMETER_FRAME_RATE_T */
496 MMAL_PARAMETER_VIDEO_FRAME_RATE,
498 /** @ref MMAL_PARAMETER_UINT32_T. */
499 MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT,
501 /** @ref MMAL_PARAMETER_UINT32_T. */
502 MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT,
504 /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */
505 MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL,
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.
512 MMAL_PARAMETER_VIDEO_ALIGN_HORIZ,
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.
518 MMAL_PARAMETER_VIDEO_ALIGN_VERT,
520 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
521 MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES,
523 /** @ref MMAL_PARAMETER_UINT32_T. */
524 MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT,
526 /**< @ref MMAL_PARAMETER_UINT32_T. */
527 MMAL_PARAMETER_VIDEO_ENCODE_QP_P,
529 /**< @ref MMAL_PARAMETER_UINT32_T. */
530 MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT,
532 /** @ref MMAL_PARAMETER_UINT32_T */
533 MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS,
535 /** @ref MMAL_PARAMETER_UINT32_T. */
536 MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE,
538 /* H264 specific parameters */
540 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
541 MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC,
543 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
544 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY,
546 /** @ref MMAL_PARAMETER_BOOLEAN_T. */
547 MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS,
549 /** @ref MMAL_PARAMETER_UINT32_T. */
550 MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC,
552 /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */
553 MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE,
555 /** @ref MMAL_PARAMETER_BOOLEAN_T */
556 MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN,
558 /** @ref MMAL_PARAMETER_BOOLEAN_T */
559 MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP,
561 /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */
562 MMAL_PARAMETER_VIDEO_DRM_INIT_INFO,
564 /** @ref MMAL_PARAMETER_BOOLEAN_T */
565 MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO,
567 /** @ref MMAL_PARAMETER_BOOLEAN_T */
568 MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT,
570 /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */
571 MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER,
573 /** @ref MMAL_PARAMETER_BYTES_T */
574 MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3,
576 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
577 MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS,
579 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
580 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG,
582 /**< @ref MMAL_PARAMETER_BOOLEAN_T */
583 MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER
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,
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,
605 enum mmal_parameter_displaymode {
606 MMAL_DISPLAY_MODE_FILL = 0,
607 MMAL_DISPLAY_MODE_LETTERBOX = 1,
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,
625 /* rectangle, used lots so it gets its own struct */
626 struct vchiq_mmal_rect {
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
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.
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
655 /** Indicates any rotation or flipping used to map frames onto
656 * the natural display orientation.
658 u32 transform; /* enum mmal_parameter_displaytransform */
660 /** Where to display the frame within the screen, if
661 * fullscreen is zero.
663 struct vchiq_mmal_rect dest_rect;
665 /** Indicates which area of the frame to display. If all
666 * values are zero, the whole frame will be used.
668 struct vchiq_mmal_rect src_rect;
670 /** If set to non-zero, indicates that any display scaling
671 * should disregard the aspect ratio of the frame region being
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
684 u32 mode; /* enum mmal_parameter_displaymode */
686 /** If non-zero, defines the width of a source pixel relative
687 * to \code pixel_y \endcode. If zero, then pixels default to
692 /** If non-zero, defines the height of a source pixel relative
693 * to \code pixel_x \endcode. If zero, then pixels default to
698 /** Sets the relative depth of the images, with greater values
699 * being in front of smaller values.
703 /** Set to non-zero to ensure copy protection is used on
706 s32 copyprotect_required;
708 /** Level of opacity of the layer, where zero is fully
709 * transparent and 255 is fully opaque.
714 #define MMAL_MAX_IMAGEFX_PARAMETERS 5
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];
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
726 struct mmal_parameter_camera_info_camera_t {
731 u8 camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN];
734 enum mmal_parameter_camera_info_flash_type_t {
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
742 struct mmal_parameter_camera_info_flash_t {
743 enum mmal_parameter_camera_info_flash_type_t flash_type;
746 struct mmal_parameter_camera_info_t {
749 struct mmal_parameter_camera_info_camera_t
750 cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS];
751 struct mmal_parameter_camera_info_flash_t
752 flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES];