MMAL_3-15-2015
mmal_parameters_video.h
1 /*
2 Copyright (c) 2012, Broadcom Europe Ltd
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7  * Redistributions of source code must retain the above copyright
8  notice, this list of conditions and the following disclaimer.
9  * Redistributions in binary form must reproduce the above copyright
10  notice, this list of conditions and the following disclaimer in the
11  documentation and/or other materials provided with the distribution.
12  * Neither the name of the copyright holder nor the
13  names of its contributors may be used to endorse or promote products
14  derived from this software without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 
28 #ifndef MMAL_PARAMETERS_VIDEO_H
29 #define MMAL_PARAMETERS_VIDEO_H
30 
31 #include "mmal_parameters_common.h"
32 
33 /*************************************************
34  * ALWAYS ADD NEW ENUMS AT THE END OF THIS LIST! *
35  ************************************************/
36 
40 enum {
78  /*H264 specific parameters*/
101 };
102 
109 typedef enum MMAL_DISPLAYTRANSFORM_T {
110  MMAL_DISPLAY_ROT0 = 0,
111  MMAL_DISPLAY_MIRROR_ROT0 = 1,
112  MMAL_DISPLAY_MIRROR_ROT180 = 2,
113  MMAL_DISPLAY_ROT180 = 3,
114  MMAL_DISPLAY_MIRROR_ROT90 = 4,
115  MMAL_DISPLAY_ROT270 = 5,
116  MMAL_DISPLAY_ROT90 = 6,
117  MMAL_DISPLAY_MIRROR_ROT270 = 7,
118  MMAL_DISPLAY_DUMMY = 0x7FFFFFFF
119 } MMAL_DISPLAYTRANSFORM_T;
120 
122 typedef enum MMAL_DISPLAYMODE_T {
123  MMAL_DISPLAY_MODE_FILL = 0,
124  MMAL_DISPLAY_MODE_LETTERBOX = 1,
125  // these allow a left eye source->dest to be specified and the right eye mapping will be inferred by symmetry
126  MMAL_DISPLAY_MODE_STEREO_LEFT_TO_LEFT = 2,
127  MMAL_DISPLAY_MODE_STEREO_TOP_TO_TOP = 3,
128  MMAL_DISPLAY_MODE_STEREO_LEFT_TO_TOP = 4,
129  MMAL_DISPLAY_MODE_STEREO_TOP_TO_LEFT = 5,
130  MMAL_DISPLAY_MODE_DUMMY = 0x7FFFFFFF
131 } MMAL_DISPLAYMODE_T;
132 
135 typedef enum MMAL_DISPLAYSET_T {
136  MMAL_DISPLAY_SET_NONE = 0,
137  MMAL_DISPLAY_SET_NUM = 1,
138  MMAL_DISPLAY_SET_FULLSCREEN = 2,
139  MMAL_DISPLAY_SET_TRANSFORM = 4,
140  MMAL_DISPLAY_SET_DEST_RECT = 8,
141  MMAL_DISPLAY_SET_SRC_RECT = 0x10,
142  MMAL_DISPLAY_SET_MODE = 0x20,
143  MMAL_DISPLAY_SET_PIXEL = 0x40,
144  MMAL_DISPLAY_SET_NOASPECT = 0x80,
145  MMAL_DISPLAY_SET_LAYER = 0x100,
146  MMAL_DISPLAY_SET_COPYPROTECT = 0x200,
147  MMAL_DISPLAY_SET_ALPHA = 0x400,
148  MMAL_DISPLAY_SET_DUMMY = 0x7FFFFFFF
149 } MMAL_DISPLAYSET_T;
150 
157 typedef struct MMAL_DISPLAYREGION_T {
163  uint32_t set;
168  uint32_t display_num;
173  MMAL_BOOL_T fullscreen;
177  MMAL_DISPLAYTRANSFORM_T transform;
188  MMAL_BOOL_T noaspect;
195  MMAL_DISPLAYMODE_T mode;
199  uint32_t pixel_x;
203  uint32_t pixel_y;
207  int32_t layer;
210  MMAL_BOOL_T copyprotect_required;
214  uint32_t alpha;
216 
221 typedef enum MMAL_VIDEO_PROFILE_T {
222  MMAL_VIDEO_PROFILE_H263_BASELINE,
223  MMAL_VIDEO_PROFILE_H263_H320CODING,
224  MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE,
225  MMAL_VIDEO_PROFILE_H263_ISWV2,
226  MMAL_VIDEO_PROFILE_H263_ISWV3,
227  MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION,
228  MMAL_VIDEO_PROFILE_H263_INTERNET,
229  MMAL_VIDEO_PROFILE_H263_INTERLACE,
230  MMAL_VIDEO_PROFILE_H263_HIGHLATENCY,
231  MMAL_VIDEO_PROFILE_MP4V_SIMPLE,
232  MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE,
233  MMAL_VIDEO_PROFILE_MP4V_CORE,
234  MMAL_VIDEO_PROFILE_MP4V_MAIN,
235  MMAL_VIDEO_PROFILE_MP4V_NBIT,
236  MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE,
237  MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE,
238  MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA,
239  MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED,
240  MMAL_VIDEO_PROFILE_MP4V_HYBRID,
241  MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME,
242  MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE,
243  MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING,
244  MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE,
245  MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE,
246  MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE,
247  MMAL_VIDEO_PROFILE_H264_BASELINE,
248  MMAL_VIDEO_PROFILE_H264_MAIN,
249  MMAL_VIDEO_PROFILE_H264_EXTENDED,
250  MMAL_VIDEO_PROFILE_H264_HIGH,
251  MMAL_VIDEO_PROFILE_H264_HIGH10,
252  MMAL_VIDEO_PROFILE_H264_HIGH422,
253  MMAL_VIDEO_PROFILE_H264_HIGH444,
254  MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE,
255  MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF
256 } MMAL_VIDEO_PROFILE_T;
257 
262 typedef enum MMAL_VIDEO_LEVEL_T {
263  MMAL_VIDEO_LEVEL_H263_10,
264  MMAL_VIDEO_LEVEL_H263_20,
265  MMAL_VIDEO_LEVEL_H263_30,
266  MMAL_VIDEO_LEVEL_H263_40,
267  MMAL_VIDEO_LEVEL_H263_45,
268  MMAL_VIDEO_LEVEL_H263_50,
269  MMAL_VIDEO_LEVEL_H263_60,
270  MMAL_VIDEO_LEVEL_H263_70,
271  MMAL_VIDEO_LEVEL_MP4V_0,
272  MMAL_VIDEO_LEVEL_MP4V_0b,
273  MMAL_VIDEO_LEVEL_MP4V_1,
274  MMAL_VIDEO_LEVEL_MP4V_2,
275  MMAL_VIDEO_LEVEL_MP4V_3,
276  MMAL_VIDEO_LEVEL_MP4V_4,
277  MMAL_VIDEO_LEVEL_MP4V_4a,
278  MMAL_VIDEO_LEVEL_MP4V_5,
279  MMAL_VIDEO_LEVEL_MP4V_6,
280  MMAL_VIDEO_LEVEL_H264_1,
281  MMAL_VIDEO_LEVEL_H264_1b,
282  MMAL_VIDEO_LEVEL_H264_11,
283  MMAL_VIDEO_LEVEL_H264_12,
284  MMAL_VIDEO_LEVEL_H264_13,
285  MMAL_VIDEO_LEVEL_H264_2,
286  MMAL_VIDEO_LEVEL_H264_21,
287  MMAL_VIDEO_LEVEL_H264_22,
288  MMAL_VIDEO_LEVEL_H264_3,
289  MMAL_VIDEO_LEVEL_H264_31,
290  MMAL_VIDEO_LEVEL_H264_32,
291  MMAL_VIDEO_LEVEL_H264_4,
292  MMAL_VIDEO_LEVEL_H264_41,
293  MMAL_VIDEO_LEVEL_H264_42,
294  MMAL_VIDEO_LEVEL_H264_5,
295  MMAL_VIDEO_LEVEL_H264_51,
296  MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF
297 } MMAL_VIDEO_LEVEL_T;
298 
304 {
306 
307  struct
308  {
309  MMAL_VIDEO_PROFILE_T profile;
310  MMAL_VIDEO_LEVEL_T level;
311  } profile[1];
313 
315 typedef enum MMAL_VIDEO_RATECONTROL_T {
316  MMAL_VIDEO_RATECONTROL_DEFAULT,
317  MMAL_VIDEO_RATECONTROL_VARIABLE,
318  MMAL_VIDEO_RATECONTROL_CONSTANT,
319  MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES,
320  MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES,
321  MMAL_VIDEO_RATECONTROL_DUMMY = 0x7fffffff
322 } MMAL_VIDEO_RATECONTROL_T;
323 
325 typedef enum MMAL_VIDEO_INTRA_REFRESH_T {
326  MMAL_VIDEO_INTRA_REFRESH_CYCLIC,
327  MMAL_VIDEO_INTRA_REFRESH_ADAPTIVE,
328  MMAL_VIDEO_INTRA_REFRESH_BOTH,
329  MMAL_VIDEO_INTRA_REFRESH_KHRONOSEXTENSIONS = 0x6F000000,
330  MMAL_VIDEO_INTRA_REFRESH_VENDORSTARTUNUSED = 0x7F000000,
331  MMAL_VIDEO_INTRA_REFRESH_CYCLIC_MROWS,
332  MMAL_VIDEO_INTRA_REFRESH_PSEUDO_RAND,
333  MMAL_VIDEO_INTRA_REFRESH_MAX,
334  MMAL_VIDEO_INTRA_REFRESH_DUMMY = 0x7FFFFFFF
335 } MMAL_VIDEO_INTRA_REFRESH_T;
336 
337 /*Encode RC Models Supported*/
338 typedef enum MMAL_VIDEO_ENCODE_RC_MODEL_T {
339  MMAL_VIDEO_ENCODER_RC_MODEL_DEFAULT = 0,
340  MMAL_VIDEO_ENCODER_RC_MODEL_JVT = MMAL_VIDEO_ENCODER_RC_MODEL_DEFAULT,
341  MMAL_VIDEO_ENCODER_RC_MODEL_VOWIFI,
342  MMAL_VIDEO_ENCODER_RC_MODEL_CBR,
343  MMAL_VIDEO_ENCODER_RC_MODEL_LAST,
344  MMAL_VIDEO_ENCODER_RC_MODEL_DUMMY = 0x7FFFFFFF
345 } MMAL_VIDEO_ENCODE_RC_MODEL_T;
346 
349  MMAL_VIDEO_ENCODE_RC_MODEL_T rc_model;
351 
355 
356  MMAL_VIDEO_RATECONTROL_T control;
358 
359 /*H264 INTRA MB MODES*/
360 typedef enum MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T {
361  MMAL_VIDEO_ENCODER_H264_MB_4x4_INTRA = 1,
362  MMAL_VIDEO_ENCODER_H264_MB_8x8_INTRA = 2,
363  MMAL_VIDEO_ENCODER_H264_MB_16x16_INTRA = 4,
364  MMAL_VIDEO_ENCODER_H264_MB_INTRA_DUMMY = 0x7fffffff
365 } MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T;
366 
369  MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T mb_mode;
371 
373 typedef enum MMAL_VIDEO_NALUNITFORMAT_T {
374  MMAL_VIDEO_NALUNITFORMAT_STARTCODES = 1,
375  MMAL_VIDEO_NALUNITFORMAT_NALUNITPERBUFFER = 2,
376  MMAL_VIDEO_NALUNITFORMAT_ONEBYTEINTERLEAVELENGTH = 4,
377  MMAL_VIDEO_NALUNITFORMAT_TWOBYTEINTERLEAVELENGTH = 8,
378  MMAL_VIDEO_NALUNITFORMAT_FOURBYTEINTERLEAVELENGTH = 16,
379  MMAL_VIDEO_NALUNITFORMAT_DUMMY = 0x7fffffff
380 } MMAL_VIDEO_NALUNITFORMAT_T;
381 
385 
386  MMAL_VIDEO_NALUNITFORMAT_T format;
388 
394 
395  uint32_t custom_max_mbps;
396  uint32_t custom_max_fs;
397  uint32_t custom_max_br_and_cpb;
399 
405 
406  MMAL_VIDEO_INTRA_REFRESH_T refresh_mode;
407  uint32_t air_mbs;
408  uint32_t air_ref;
409  uint32_t cir_mbs;
410  uint32_t pir_mbs;
412 
416 
417  uint32_t enable;
419 
423 
424  uint32_t loss_rate;
426 
430 
431  uint32_t current_time;
432  uint32_t ticks_per_sec;
433  uint8_t lhs[32];
435 
439 
440  uint32_t size_wanted;
442  uint32_t protect;
444  uint32_t mem_handle;
445  void * phys_addr;
448 
451 
452  MMAL_BOOL_T valid;
453  uint32_t match;
454  uint32_t period;
455  uint32_t phase;
456  uint32_t pixel_clock_nominal;
457  uint32_t pixel_clock;
458  uint32_t hvs_status;
459  uint32_t dummy[2];
461 
462 typedef enum MMAL_INTERLACETYPE_T {
463  MMAL_InterlaceProgressive,
464  MMAL_InterlaceFieldSingleUpperFirst,
466  MMAL_InterlaceFieldSingleLowerFirst,
468  MMAL_InterlaceFieldsInterleavedUpperFirst,
470  MMAL_InterlaceFieldsInterleavedLowerFirst,
472  MMAL_InterlaceMixed,
474  MMAL_InterlaceKhronosExtensions = 0x6F000000,
475  MMAL_InterlaceVendorStartUnused = 0x7F000000,
476  MMAL_InterlaceMax = 0x7FFFFFFF
477 } MMAL_INTERLACETYPE_T;
478 
481 
482  MMAL_INTERLACETYPE_T eMode;
483  MMAL_BOOL_T bRepeatFirstField;
485 
486 #endif
void * phys_addr
Definition: mmal_parameters_video.h:445
uint32_t set
Definition: mmal_parameters_video.h:163
Definition: mmal_parameters_video.h:44
Definition: mmal_parameters_video.h:93
Definition: mmal_parameters_video.h:303
Definition: mmal_parameters_video.h:428
Definition: mmal_types.h:69
MMAL_BOOL_T copyprotect_required
Definition: mmal_parameters_video.h:210
Definition: mmal_parameters_video.h:56
MMAL_RECT_T dest_rect
Definition: mmal_parameters_video.h:180
Definition: mmal_parameters_video.h:367
Definition: mmal_parameters_video.h:89
Definition: mmal_parameters_video.h:99
Definition: mmal_parameters_video.h:347
Definition: mmal_parameters_video.h:91
Definition: mmal_parameters_video.h:75
Definition: mmal_parameters_video.h:65
MMAL_BOOL_T fullscreen
Definition: mmal_parameters_video.h:173
uint32_t size_wanted
Definition: mmal_parameters_video.h:440
Definition: mmal_parameters_video.h:46
Definition: mmal_parameters_video.h:449
Definition: mmal_parameters_video.h:73
MMAL_RECT_T src_rect
Definition: mmal_parameters_video.h:184
Definition: mmal_parameters_video.h:96
int32_t layer
Definition: mmal_parameters_video.h:207
Definition: mmal_parameters_video.h:47
Definition: mmal_parameters_video.h:81
Definition: mmal_parameters_video.h:45
Definition: mmal_parameters_video.h:60
Definition: mmal_parameters_video.h:403
Definition: mmal_parameters_video.h:79
MMAL_DISPLAYMODE_T mode
Definition: mmal_parameters_video.h:195
Definition: mmal_parameters_video.h:58
Definition: mmal_parameters_video.h:85
Definition: mmal_parameters_video.h:437
uint32_t pixel_x
Definition: mmal_parameters_video.h:199
Definition: mmal_parameters_video.h:43
Definition: mmal_parameters_video.h:49
Definition: mmal_parameters_video.h:51
uint32_t protect
Definition: mmal_parameters_video.h:442
uint32_t alpha
Definition: mmal_parameters_video.h:214
Definition: mmal_parameters_video.h:64
MMAL_BOOL_T bRepeatFirstField
Definition: mmal_parameters_video.h:483
Definition: mmal_parameters_video.h:90
Definition: mmal_parameters_video.h:48
Definition: mmal_parameters_video.h:68
Definition: mmal_parameters_video.h:88
Definition: mmal_parameters_video.h:100
Definition: mmal_parameters_video.h:83
Definition: mmal_parameters_video.h:62
Definition: mmal_parameters_common.h:86
Definition: mmal_parameters_video.h:63
Definition: mmal_parameters_video.h:98
Definition: mmal_parameters_video.h:82
Definition: mmal_parameters_video.h:53
Definition: mmal_parameters_video.h:54
Definition: mmal_parameters_video.h:52
Definition: mmal_parameters_video.h:94
Definition: mmal_parameters_video.h:71
Definition: mmal_parameters_video.h:76
Definition: mmal_parameters_video.h:479
Definition: mmal_parameters_video.h:74
uint32_t display_num
Definition: mmal_parameters_video.h:168
Definition: mmal_parameters_video.h:392
MMAL_INTERLACETYPE_T eMode
Definition: mmal_parameters_video.h:482
Definition: mmal_parameters_video.h:421
MMAL_DISPLAYTRANSFORM_T transform
Definition: mmal_parameters_video.h:177
Definition: mmal_parameters_video.h:414
uint32_t mem_handle
Definition: mmal_parameters_video.h:444
Definition: mmal_parameters_video.h:61
Definition: mmal_parameters_video.h:41
Definition: mmal_parameters_video.h:97
Definition: mmal_parameters_video.h:353
MMAL_BOOL_T noaspect
Definition: mmal_parameters_video.h:188
uint32_t pixel_y
Definition: mmal_parameters_video.h:203
Definition: mmal_parameters_video.h:86
Definition: mmal_parameters_video.h:157
Definition: mmal_parameters_video.h:383
#define MMAL_PARAMETER_GROUP_VIDEO
Definition: mmal_parameters_common.h:47
Definition: mmal_parameters_video.h:72
Definition: mmal_parameters_video.h:95
Definition: mmal_parameters_video.h:57
Definition: mmal_parameters_video.h:80