My Project
|
00001 /* 00002 Copyright (c) 2012, Broadcom Europe Ltd 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions are met: 00007 * Redistributions of source code must retain the above copyright 00008 notice, this list of conditions and the following disclaimer. 00009 * Redistributions in binary form must reproduce the above copyright 00010 notice, this list of conditions and the following disclaimer in the 00011 documentation and/or other materials provided with the distribution. 00012 * Neither the name of the copyright holder nor the 00013 names of its contributors may be used to endorse or promote products 00014 derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00017 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 00020 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00021 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00022 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00023 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00025 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 */ 00027 00028 #ifndef MMAL_PARAMETERS_VIDEO_H 00029 #define MMAL_PARAMETERS_VIDEO_H 00030 00031 #include "mmal_parameters_common.h" 00032 00033 /************************************************* 00034 * ALWAYS ADD NEW ENUMS AT THE END OF THIS LIST! * 00035 ************************************************/ 00036 00040 enum { 00041 MMAL_PARAMETER_DISPLAYREGION 00042 = MMAL_PARAMETER_GROUP_VIDEO, 00043 MMAL_PARAMETER_SUPPORTED_PROFILES, 00044 MMAL_PARAMETER_PROFILE, 00045 MMAL_PARAMETER_INTRAPERIOD, 00046 MMAL_PARAMETER_RATECONTROL, 00047 MMAL_PARAMETER_NALUNITFORMAT, 00048 MMAL_PARAMETER_MINIMISE_FRAGMENTATION, 00049 MMAL_PARAMETER_MB_ROWS_PER_SLICE, 00051 MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION, 00052 MMAL_PARAMETER_VIDEO_EEDE_ENABLE, 00053 MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE, 00054 MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, 00056 MMAL_PARAMETER_VIDEO_INTRA_REFRESH, 00057 MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT, 00058 MMAL_PARAMETER_VIDEO_BIT_RATE, 00060 MMAL_PARAMETER_VIDEO_FRAME_RATE, 00061 MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT, 00062 MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, 00063 MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL, 00064 MMAL_PARAMETER_EXTRA_BUFFERS, 00065 MMAL_PARAMETER_VIDEO_ALIGN_HORIZ, 00068 MMAL_PARAMETER_VIDEO_ALIGN_VERT, 00071 MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES, 00072 MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT, 00073 MMAL_PARAMETER_VIDEO_ENCODE_QP_P, 00074 MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT, 00075 MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS, 00076 MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE, 00078 /*H264 specific parameters*/ 00079 MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC, 00080 MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY, 00081 MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS, 00082 MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC, 00083 MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE, 00085 MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN, 00086 MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP, 00088 MMAL_PARAMETER_VIDEO_DRM_INIT_INFO, 00089 MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO, 00090 MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT, 00091 MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER, 00093 MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3 00094 }; 00095 00102 typedef enum MMAL_DISPLAYTRANSFORM_T { 00103 MMAL_DISPLAY_ROT0 = 0, 00104 MMAL_DISPLAY_MIRROR_ROT0 = 1, 00105 MMAL_DISPLAY_MIRROR_ROT180 = 2, 00106 MMAL_DISPLAY_ROT180 = 3, 00107 MMAL_DISPLAY_MIRROR_ROT90 = 4, 00108 MMAL_DISPLAY_ROT270 = 5, 00109 MMAL_DISPLAY_ROT90 = 6, 00110 MMAL_DISPLAY_MIRROR_ROT270 = 7, 00111 MMAL_DISPLAY_DUMMY = 0x7FFFFFFF 00112 } MMAL_DISPLAYTRANSFORM_T; 00113 00115 typedef enum MMAL_DISPLAYMODE_T { 00116 MMAL_DISPLAY_MODE_FILL = 0, 00117 MMAL_DISPLAY_MODE_LETTERBOX = 1, 00118 MMAL_DISPLAY_MODE_DUMMY = 0x7FFFFFFF 00119 } MMAL_DISPLAYMODE_T; 00120 00123 typedef enum MMAL_DISPLAYSET_T { 00124 MMAL_DISPLAY_SET_NONE = 0, 00125 MMAL_DISPLAY_SET_NUM = 1, 00126 MMAL_DISPLAY_SET_FULLSCREEN = 2, 00127 MMAL_DISPLAY_SET_TRANSFORM = 4, 00128 MMAL_DISPLAY_SET_DEST_RECT = 8, 00129 MMAL_DISPLAY_SET_SRC_RECT = 0x10, 00130 MMAL_DISPLAY_SET_MODE = 0x20, 00131 MMAL_DISPLAY_SET_PIXEL = 0x40, 00132 MMAL_DISPLAY_SET_NOASPECT = 0x80, 00133 MMAL_DISPLAY_SET_LAYER = 0x100, 00134 MMAL_DISPLAY_SET_COPYPROTECT = 0x200, 00135 MMAL_DISPLAY_SET_ALPHA = 0x400, 00136 MMAL_DISPLAY_SET_DUMMY = 0x7FFFFFFF 00137 } MMAL_DISPLAYSET_T; 00138 00145 typedef struct MMAL_DISPLAYREGION_T { 00146 MMAL_PARAMETER_HEADER_T hdr; 00151 uint32_t set; 00156 uint32_t display_num; 00161 MMAL_BOOL_T fullscreen; 00165 MMAL_DISPLAYTRANSFORM_T transform; 00168 MMAL_RECT_T dest_rect; 00172 MMAL_RECT_T src_rect; 00176 MMAL_BOOL_T noaspect; 00183 MMAL_DISPLAYMODE_T mode; 00187 uint32_t pixel_x; 00191 uint32_t pixel_y; 00195 int32_t layer; 00198 MMAL_BOOL_T copyprotect_required; 00202 uint32_t alpha; 00203 } MMAL_DISPLAYREGION_T; 00204 00209 typedef enum MMAL_VIDEO_PROFILE_T { 00210 MMAL_VIDEO_PROFILE_H263_BASELINE, 00211 MMAL_VIDEO_PROFILE_H263_H320CODING, 00212 MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE, 00213 MMAL_VIDEO_PROFILE_H263_ISWV2, 00214 MMAL_VIDEO_PROFILE_H263_ISWV3, 00215 MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION, 00216 MMAL_VIDEO_PROFILE_H263_INTERNET, 00217 MMAL_VIDEO_PROFILE_H263_INTERLACE, 00218 MMAL_VIDEO_PROFILE_H263_HIGHLATENCY, 00219 MMAL_VIDEO_PROFILE_MP4V_SIMPLE, 00220 MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE, 00221 MMAL_VIDEO_PROFILE_MP4V_CORE, 00222 MMAL_VIDEO_PROFILE_MP4V_MAIN, 00223 MMAL_VIDEO_PROFILE_MP4V_NBIT, 00224 MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE, 00225 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE, 00226 MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA, 00227 MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED, 00228 MMAL_VIDEO_PROFILE_MP4V_HYBRID, 00229 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME, 00230 MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE, 00231 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING, 00232 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE, 00233 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE, 00234 MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE, 00235 MMAL_VIDEO_PROFILE_H264_BASELINE, 00236 MMAL_VIDEO_PROFILE_H264_MAIN, 00237 MMAL_VIDEO_PROFILE_H264_EXTENDED, 00238 MMAL_VIDEO_PROFILE_H264_HIGH, 00239 MMAL_VIDEO_PROFILE_H264_HIGH10, 00240 MMAL_VIDEO_PROFILE_H264_HIGH422, 00241 MMAL_VIDEO_PROFILE_H264_HIGH444, 00242 MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE, 00243 MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF 00244 } MMAL_VIDEO_PROFILE_T; 00245 00250 typedef enum MMAL_VIDEO_LEVEL_T { 00251 MMAL_VIDEO_LEVEL_H263_10, 00252 MMAL_VIDEO_LEVEL_H263_20, 00253 MMAL_VIDEO_LEVEL_H263_30, 00254 MMAL_VIDEO_LEVEL_H263_40, 00255 MMAL_VIDEO_LEVEL_H263_45, 00256 MMAL_VIDEO_LEVEL_H263_50, 00257 MMAL_VIDEO_LEVEL_H263_60, 00258 MMAL_VIDEO_LEVEL_H263_70, 00259 MMAL_VIDEO_LEVEL_MP4V_0, 00260 MMAL_VIDEO_LEVEL_MP4V_0b, 00261 MMAL_VIDEO_LEVEL_MP4V_1, 00262 MMAL_VIDEO_LEVEL_MP4V_2, 00263 MMAL_VIDEO_LEVEL_MP4V_3, 00264 MMAL_VIDEO_LEVEL_MP4V_4, 00265 MMAL_VIDEO_LEVEL_MP4V_4a, 00266 MMAL_VIDEO_LEVEL_MP4V_5, 00267 MMAL_VIDEO_LEVEL_MP4V_6, 00268 MMAL_VIDEO_LEVEL_H264_1, 00269 MMAL_VIDEO_LEVEL_H264_1b, 00270 MMAL_VIDEO_LEVEL_H264_11, 00271 MMAL_VIDEO_LEVEL_H264_12, 00272 MMAL_VIDEO_LEVEL_H264_13, 00273 MMAL_VIDEO_LEVEL_H264_2, 00274 MMAL_VIDEO_LEVEL_H264_21, 00275 MMAL_VIDEO_LEVEL_H264_22, 00276 MMAL_VIDEO_LEVEL_H264_3, 00277 MMAL_VIDEO_LEVEL_H264_31, 00278 MMAL_VIDEO_LEVEL_H264_32, 00279 MMAL_VIDEO_LEVEL_H264_4, 00280 MMAL_VIDEO_LEVEL_H264_41, 00281 MMAL_VIDEO_LEVEL_H264_42, 00282 MMAL_VIDEO_LEVEL_H264_5, 00283 MMAL_VIDEO_LEVEL_H264_51, 00284 MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF 00285 } MMAL_VIDEO_LEVEL_T; 00286 00291 typedef struct MMAL_PARAMETER_VIDEO_PROFILE_T 00292 { 00293 MMAL_PARAMETER_HEADER_T hdr; 00294 00295 struct 00296 { 00297 MMAL_VIDEO_PROFILE_T profile; 00298 MMAL_VIDEO_LEVEL_T level; 00299 } profile[1]; 00300 } MMAL_PARAMETER_VIDEO_PROFILE_T; 00301 00303 typedef enum MMAL_VIDEO_RATECONTROL_T { 00304 MMAL_VIDEO_RATECONTROL_DEFAULT, 00305 MMAL_VIDEO_RATECONTROL_VARIABLE, 00306 MMAL_VIDEO_RATECONTROL_CONSTANT, 00307 MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES, 00308 MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES, 00309 MMAL_VIDEO_RATECONTROL_DUMMY = 0x7fffffff 00310 } MMAL_VIDEO_RATECONTROL_T; 00311 00313 typedef enum MMAL_VIDEO_INTRA_REFRESH_T { 00314 MMAL_VIDEO_INTRA_REFRESH_CYCLIC, 00315 MMAL_VIDEO_INTRA_REFRESH_ADAPTIVE, 00316 MMAL_VIDEO_INTRA_REFRESH_BOTH, 00317 MMAL_VIDEO_INTRA_REFRESH_KHRONOSEXTENSIONS = 0x6F000000, 00318 MMAL_VIDEO_INTRA_REFRESH_VENDORSTARTUNUSED = 0x7F000000, 00319 MMAL_VIDEO_INTRA_REFRESH_CYCLIC_MROWS, 00320 MMAL_VIDEO_INTRA_REFRESH_PSEUDO_RAND, 00321 MMAL_VIDEO_INTRA_REFRESH_MAX, 00322 MMAL_VIDEO_INTRA_REFRESH_DUMMY = 0x7FFFFFFF 00323 } MMAL_VIDEO_INTRA_REFRESH_T; 00324 00325 /*Encode RC Models Supported*/ 00326 typedef enum MMAL_VIDEO_ENCODE_RC_MODEL_T { 00327 MMAL_VIDEO_ENCODER_RC_MODEL_DEFAULT = 0, 00328 MMAL_VIDEO_ENCODER_RC_MODEL_JVT = MMAL_VIDEO_ENCODER_RC_MODEL_DEFAULT, 00329 MMAL_VIDEO_ENCODER_RC_MODEL_VOWIFI, 00330 MMAL_VIDEO_ENCODER_RC_MODEL_CBR, 00331 MMAL_VIDEO_ENCODER_RC_MODEL_LAST, 00332 MMAL_VIDEO_ENCODER_RC_MODEL_DUMMY = 0x7FFFFFFF 00333 } MMAL_VIDEO_ENCODE_RC_MODEL_T; 00334 00335 typedef struct MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T { 00336 MMAL_PARAMETER_HEADER_T hdr; 00337 MMAL_VIDEO_ENCODE_RC_MODEL_T rc_model; 00338 }MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T; 00339 00341 typedef struct MMAL_PARAMETER_VIDEO_RATECONTROL_T { 00342 MMAL_PARAMETER_HEADER_T hdr; 00343 00344 MMAL_VIDEO_RATECONTROL_T control; 00345 } MMAL_PARAMETER_VIDEO_RATECONTROL_T; 00346 00347 /*H264 INTRA MB MODES*/ 00348 typedef enum MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T { 00349 MMAL_VIDEO_ENCODER_H264_MB_4x4_INTRA = 1, 00350 MMAL_VIDEO_ENCODER_H264_MB_8x8_INTRA = 2, 00351 MMAL_VIDEO_ENCODER_H264_MB_16x16_INTRA = 4, 00352 MMAL_VIDEO_ENCODER_H264_MB_INTRA_DUMMY = 0x7fffffff 00353 } MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T; 00354 00355 typedef struct MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T { 00356 MMAL_PARAMETER_HEADER_T hdr; 00357 MMAL_VIDEO_ENCODE_H264_MB_INTRA_MODES_T mb_mode; 00358 }MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T; 00359 00361 typedef enum MMAL_VIDEO_NALUNITFORMAT_T { 00362 MMAL_VIDEO_NALUNITFORMAT_STARTCODES = 1, 00363 MMAL_VIDEO_NALUNITFORMAT_NALUNITPERBUFFER = 2, 00364 MMAL_VIDEO_NALUNITFORMAT_ONEBYTEINTERLEAVELENGTH = 4, 00365 MMAL_VIDEO_NALUNITFORMAT_TWOBYTEINTERLEAVELENGTH = 8, 00366 MMAL_VIDEO_NALUNITFORMAT_FOURBYTEINTERLEAVELENGTH = 16, 00367 MMAL_VIDEO_NALUNITFORMAT_DUMMY = 0x7fffffff 00368 } MMAL_VIDEO_NALUNITFORMAT_T; 00369 00371 typedef struct MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T { 00372 MMAL_PARAMETER_HEADER_T hdr; 00373 00374 MMAL_VIDEO_NALUNITFORMAT_T format; 00375 } MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T; 00376 00380 typedef struct MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T { 00381 MMAL_PARAMETER_HEADER_T hdr; 00382 00383 uint32_t custom_max_mbps; 00384 uint32_t custom_max_fs; 00385 uint32_t custom_max_br_and_cpb; 00386 } MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T; 00387 00391 typedef struct MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T { 00392 MMAL_PARAMETER_HEADER_T hdr; 00393 00394 MMAL_VIDEO_INTRA_REFRESH_T refresh_mode; 00395 uint32_t air_mbs; 00396 uint32_t air_ref; 00397 uint32_t cir_mbs; 00398 uint32_t pir_mbs; 00399 } MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T; 00400 00402 typedef struct MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T { 00403 MMAL_PARAMETER_HEADER_T hdr; 00404 00405 uint32_t enable; 00406 } MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T; 00407 00409 typedef struct MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T { 00410 MMAL_PARAMETER_HEADER_T hdr; 00411 00412 uint32_t loss_rate; 00413 } MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T; 00414 00416 typedef struct MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T { 00417 MMAL_PARAMETER_HEADER_T hdr; 00418 00419 uint32_t current_time; 00420 uint32_t ticks_per_sec; 00421 uint8_t lhs[32]; 00422 } MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T; 00423 00425 typedef struct MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T { 00426 MMAL_PARAMETER_HEADER_T hdr; 00427 00428 uint32_t size_wanted; 00430 uint32_t protect; 00432 uint32_t mem_handle; 00433 void * phys_addr; 00435 } MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T; 00436 00437 #endif