Merge tag 'v5.15.57' into rpi-5.15.y
[platform/kernel/linux-rpi.git] / drivers / staging / vc04_services / vchiq-mmal / mmal-parameters.h
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                 /**< 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,
246
247         /* 0x50 */
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 */
259         MMAL_PARAMETER_CROP,
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 */
275         MMAL_PARAMETER_GEQ,
276                 /**< Tales a @ref MMAP_PARAMETER_DPC_T */
277         MMAL_PARAMETER_DPC,
278                 /**< Tales a @ref MMAP_PARAMETER_GAMMA_T */
279         MMAL_PARAMETER_GAMMA,
280                 /**< Takes a @ref MMAL_PARAMETER_CDN_T */
281         MMAL_PARAMETER_CDN,
282                 /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
283         MMAL_PARAMETER_JPEG_IJG_SCALING,
284 };
285
286 struct mmal_parameter_rational {
287         s32 num;    /**< Numerator */
288         s32 den;    /**< Denominator */
289 };
290
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
295                                              */
296         MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp
297                                               * but subtract the
298                                               * timestamp of the first
299                                               * frame sent to give a
300                                               * zero based timestamp.
301                                               */
302 };
303
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;
309 };
310
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 */
315         u32 max_stills_h;
316         u32 stills_yuv422; /* Allow YUV422 stills capture */
317         u32 one_shot_stills; /* Continuous or one shot stills captures. */
318
319         u32 max_preview_video_w; /* Max size of the preview or video
320                                   * capture frames
321                                   */
322         u32 max_preview_video_h;
323         u32 num_preview_video_frames;
324
325         /** Sets the height of the circular buffer for stills capture. */
326         u32 stills_capture_circular_buffer_height;
327
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.
332          */
333         u32 fast_preview_resume;
334
335         /** Selects algorithm for timestamping frames if
336          * there is no clock component connected.
337          * enum mmal_parameter_camera_config_timestamp_mode
338          */
339         s32 use_stc_timestamp;
340 };
341
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,
356 };
357
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,
363 };
364
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,
377 };
378
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,
406 };
407
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
414 };
415
416 struct mmal_parameter_awbgains {
417         struct mmal_parameter_rational r_gain;  /**< Red gain */
418         struct mmal_parameter_rational b_gain;  /**< Blue gain */
419 };
420
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
428 };
429
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
465 };
466
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
502 };
503
504 struct mmal_parameter_video_profile {
505         enum mmal_video_profile profile;
506         enum mmal_video_level level;
507 };
508
509 /* video parameters */
510
511 enum mmal_parameter_video_type {
512         /** @ref MMAL_DISPLAYREGION_T */
513         MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO,
514
515         /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
516         MMAL_PARAMETER_SUPPORTED_PROFILES,
517
518         /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
519         MMAL_PARAMETER_PROFILE,
520
521         /** @ref MMAL_PARAMETER_UINT32_T */
522         MMAL_PARAMETER_INTRAPERIOD,
523
524         /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */
525         MMAL_PARAMETER_RATECONTROL,
526
527         /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */
528         MMAL_PARAMETER_NALUNITFORMAT,
529
530         /** @ref MMAL_PARAMETER_BOOLEAN_T */
531         MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
532
533         /** @ref MMAL_PARAMETER_UINT32_T.
534          * Setting the value to zero resets to the default (one slice per
535          * frame).
536          */
537         MMAL_PARAMETER_MB_ROWS_PER_SLICE,
538
539         /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */
540         MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION,
541
542         /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */
543         MMAL_PARAMETER_VIDEO_EEDE_ENABLE,
544
545         /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */
546         MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE,
547
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,
552
553         /** @ref MMAL_PARAMETER_BOOLEAN_T. */
554         MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
555
556         /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */
557         MMAL_PARAMETER_VIDEO_BIT_RATE,
558
559         /** @ref MMAL_PARAMETER_FRAME_RATE_T */
560         MMAL_PARAMETER_VIDEO_FRAME_RATE,
561
562         /** @ref MMAL_PARAMETER_UINT32_T. */
563         MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT,
564
565         /** @ref MMAL_PARAMETER_UINT32_T. */
566         MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT,
567
568         /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */
569         MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL,
570
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.
575          */
576         MMAL_PARAMETER_VIDEO_ALIGN_HORIZ,
577
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.
581          */
582         MMAL_PARAMETER_VIDEO_ALIGN_VERT,
583
584         /** @ref MMAL_PARAMETER_BOOLEAN_T. */
585         MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES,
586
587         /** @ref MMAL_PARAMETER_UINT32_T. */
588         MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT,
589
590         /**< @ref MMAL_PARAMETER_UINT32_T. */
591         MMAL_PARAMETER_VIDEO_ENCODE_QP_P,
592
593         /**< @ref MMAL_PARAMETER_UINT32_T. */
594         MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT,
595
596         /** @ref MMAL_PARAMETER_UINT32_T */
597         MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS,
598
599         /** @ref MMAL_PARAMETER_UINT32_T. */
600         MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE,
601
602         /* H264 specific parameters */
603
604         /** @ref MMAL_PARAMETER_BOOLEAN_T. */
605         MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC,
606
607         /** @ref MMAL_PARAMETER_BOOLEAN_T. */
608         MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY,
609
610         /** @ref MMAL_PARAMETER_BOOLEAN_T. */
611         MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS,
612
613         /** @ref MMAL_PARAMETER_UINT32_T. */
614         MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC,
615
616         /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */
617         MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE,
618
619         /** @ref MMAL_PARAMETER_BOOLEAN_T */
620         MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN,
621
622         /** @ref MMAL_PARAMETER_BOOLEAN_T */
623         MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP,
624
625         /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */
626         MMAL_PARAMETER_VIDEO_DRM_INIT_INFO,
627
628         /** @ref MMAL_PARAMETER_BOOLEAN_T */
629         MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO,
630
631         /** @ref MMAL_PARAMETER_BOOLEAN_T */
632         MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT,
633
634         /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */
635         MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER,
636
637         /** @ref MMAL_PARAMETER_BYTES_T */
638         MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3,
639
640         /**< @ref MMAL_PARAMETER_BOOLEAN_T */
641         MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS,
642
643         /**< @ref MMAL_PARAMETER_BOOLEAN_T */
644         MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG,
645
646         /**< @ref MMAL_PARAMETER_BOOLEAN_T */
647         MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER,
648
649         /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T. */
650         MMAL_PARAMETER_VIDEO_ENCODE_SEI_ENABLE,
651
652         /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T. */
653         MMAL_PARAMETER_VIDEO_ENCODE_INLINE_VECTORS,
654
655         /**< Take a @ref MMAL_PARAMETER_VIDEO_RENDER_STATS_T. */
656         MMAL_PARAMETER_VIDEO_RENDER_STATS,
657
658         /**< Take a @ref MMAL_PARAMETER_VIDEO_INTERLACE_TYPE_T. */
659         MMAL_PARAMETER_VIDEO_INTERLACE_TYPE,
660
661         /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
662         MMAL_PARAMETER_VIDEO_INTERPOLATE_TIMESTAMPS,
663
664         /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
665         MMAL_PARAMETER_VIDEO_ENCODE_SPS_TIMING,
666
667         /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
668         MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS,
669
670         /**< Takes a @ref MMAL_PARAMETER_SOURCE_PATTERN_T */
671         MMAL_PARAMETER_VIDEO_SOURCE_PATTERN,
672
673         /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
674         MMAL_PARAMETER_VIDEO_ENCODE_SEPARATE_NAL_BUFS,
675
676         /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
677         MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAME_LENGTH,
678
679         /**< Take a @ref MMAL_PARAMETER_VIDEO_STALL_T */
680         MMAL_PARAMETER_VIDEO_STALL_THRESHOLD,
681
682         /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
683         MMAL_PARAMETER_VIDEO_ENCODE_HEADERS_WITH_FRAME,
684
685         /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
686         MMAL_PARAMETER_VIDEO_VALIDATE_TIMESTAMPS,
687
688         /**< Takes a @ref MMAL_PARAMETER_BOOLEAN_T */
689         MMAL_PARAMETER_VIDEO_STOP_ON_PAR_COLOUR_CHANGE,
690 };
691
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,
698 };
699
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,
709 };
710
711 enum mmal_parameter_displaymode {
712         MMAL_DISPLAY_MODE_FILL = 0,
713         MMAL_DISPLAY_MODE_LETTERBOX = 1,
714 };
715
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,
729 };
730
731 /* rectangle, used lots so it gets its own struct */
732 struct vchiq_mmal_rect {
733         s32 x;
734         s32 y;
735         s32 width;
736         s32 height;
737 };
738
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
743          * combined.
744          */
745         u32 set;
746
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.
751          */
752
753         u32 display_num;
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
757          * use.
758          */
759
760         s32 fullscreen;
761         /** Indicates any rotation or flipping used to map frames onto
762          * the natural display orientation.
763          */
764         u32 transform; /* enum mmal_parameter_displaytransform */
765
766         /** Where to display the frame within the screen, if
767          * fullscreen is zero.
768          */
769         struct vchiq_mmal_rect dest_rect;
770
771         /** Indicates which area of the frame to display. If all
772          * values are zero, the whole frame will be used.
773          */
774         struct vchiq_mmal_rect src_rect;
775
776         /** If set to non-zero, indicates that any display scaling
777          * should disregard the aspect ratio of the frame region being
778          * displayed.
779          */
780         s32 noaspect;
781
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
788          * necessary.
789          */
790         u32 mode; /* enum mmal_parameter_displaymode */
791
792         /** If non-zero, defines the width of a source pixel relative
793          * to \code pixel_y \endcode.  If zero, then pixels default to
794          * being square.
795          */
796         u32 pixel_x;
797
798         /** If non-zero, defines the height of a source pixel relative
799          * to \code pixel_x \endcode.  If zero, then pixels default to
800          * being square.
801          */
802         u32 pixel_y;
803
804         /** Sets the relative depth of the images, with greater values
805          * being in front of smaller values.
806          */
807         u32 layer;
808
809         /** Set to non-zero to ensure copy protection is used on
810          * output.
811          */
812         s32 copyprotect_required;
813
814         /** Level of opacity of the layer, where zero is fully
815          * transparent and 255 is fully opaque.
816          */
817         u32 alpha;
818 };
819
820 enum mmal_interlace_type {
821         /* The data is not interlaced, it is progressive scan */
822         MMAL_INTERLACE_PROGRESSIVE,
823         /*
824          * The data is interlaced, fields sent separately in temporal order, with
825          * upper field first
826          */
827         MMAL_INTERLACE_FIELD_SINGLE_UPPER_FIRST,
828         /*
829          * The data is interlaced, fields sent separately in temporal order, with
830          * lower field first
831          */
832         MMAL_INTERLACE_FIELD_SINGLE_LOWER_FIRST,
833         /*
834          * The data is interlaced, two fields sent together line interleaved,
835          * with the upper field temporally earlier
836          */
837         MMAL_INTERLACE_FIELDS_INTERLEAVED_UPPER_FIRST,
838         /*
839          * The data is interlaced, two fields sent together line interleaved,
840          * with the lower field temporally earlier
841          */
842         MMAL_INTERLACE_FIELDS_INTERLEAVED_LOWER_FIRST,
843         /*
844          * The stream may contain a mixture of progressive and interlaced
845          * frames
846          */
847         MMAL_INTERLACE_MIXED,
848
849         MMAL_INTERLACE_DUMMY = 0x7FFFFFFF
850 };
851
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 */
855 };
856
857 #define MMAL_MAX_IMAGEFX_PARAMETERS 5
858
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];
863 };
864
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
868
869 struct mmal_parameter_camera_info_camera {
870         u32 port_id;
871         u32 max_width;
872         u32 max_height;
873         u32 lens_present;
874         u8 camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN];
875 };
876
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
883 };
884
885 struct mmal_parameter_camera_info_flash {
886         enum mmal_parameter_camera_info_flash_type flash_type;
887 };
888
889 struct mmal_parameter_camera_info {
890         u32 num_cameras;
891         u32 num_flashes;
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];
896 };
897
898 struct mmal_parameter_ccm {
899         struct mmal_parameter_rational ccm[3][3];
900         s32 offsets[3];
901 };
902
903 struct mmal_parameter_custom_ccm {
904         u32 enabled; /**< Enable the custom CCM. */
905         struct mmal_parameter_ccm ccm; /**< CCM to be used. */
906 };
907
908 struct mmal_parameter_lens_shading {
909         u32 enabled;
910         u32 grid_cell_size;
911         u32 grid_width;
912         u32 grid_stride;
913         u32 grid_height;
914         u32 mem_handle_table;
915         u32 ref_transform;
916 };
917
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
928 };
929
930 struct mmal_parameter_lens_shading_v2 {
931         u32 enabled;
932         u32 grid_cell_size;
933         u32 grid_width;
934         u32 grid_stride;
935         u32 grid_height;
936         u32 mem_handle_table;
937         u32 ref_transform;
938         u32 corner_sampled;
939         enum mmal_parameter_ls_gain_format_type gain_format;
940 };
941
942 struct mmal_parameter_black_level {
943         u32 enabled;
944         u16 black_level_r;
945         u16 black_level_g;
946         u16 black_level_b;
947         u8 pad_[2]; /* Unused */
948 };
949
950 struct mmal_parameter_geq {
951         u32 enabled;
952         u32 offset;
953         struct mmal_parameter_rational slope;
954 };
955
956 #define MMAL_NUM_GAMMA_PTS 33
957 struct mmal_parameter_gamma {
958         u32 enabled;
959         u16 x[MMAL_NUM_GAMMA_PTS];
960         u16 y[MMAL_NUM_GAMMA_PTS];
961 };
962
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
967 };
968
969 struct mmal_parameter_colour_denoise {
970         u32 enabled;
971         enum mmal_parameter_cdn_mode mode;
972 };
973
974 struct mmal_parameter_denoise {
975         u32 enabled;
976         u32 constant;
977         struct mmal_parameter_rational slope;
978         struct mmal_parameter_rational strength;
979 };
980
981 struct mmal_parameter_sharpen {
982         u32 enabled;
983         struct mmal_parameter_rational threshold;
984         struct mmal_parameter_rational strength;
985         struct mmal_parameter_rational limit;
986 };
987
988 enum mmal_dpc_mode {
989         MMAL_DPC_MODE_OFF = 0,
990         MMAL_DPC_MODE_NORMAL = 1,
991         MMAL_DPC_MODE_STRONG = 2,
992         MMAL_DPC_MODE_MAX = 0x7FFFFFFF,
993 };
994
995 struct mmal_parameter_dpc {
996         u32 enabled;
997         u32 strength;
998 };
999
1000 struct mmal_parameter_crop {
1001         struct vchiq_mmal_rect rect;
1002 };
1003
1004 #endif