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