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 */
41enum 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
77enum 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
228enum 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
241struct 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 */
249struct 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
279enum 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
295enum 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
302enum 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
315enum 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
341enum 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
349struct 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 */
355enum 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
363enum 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
400enum 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
437struct mmal_parameter_video_profile {
438 enum mmal_video_profile profile;
439 enum mmal_video_level level;
440};
441
442/* video parameters */
443
444enum 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 */
584enum 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
591enum 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
602enum mmal_parameter_displaymode {
603 MMAL_DISPLAY_MODE_FILL = 0,
604 MMAL_DISPLAY_MODE_LETTERBOX = 1,
605};
606
607enum 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 */
623struct vchiq_mmal_rect {
624 s32 x;
625 s32 y;
626 s32 width;
627 s32 height;
628};
629
630struct 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
713struct 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
723struct 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
731enum 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
739struct mmal_parameter_camera_info_flash {
740 enum mmal_parameter_camera_info_flash_type flash_type;
741};
742
743struct 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

source code of linux/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h