My Project
/home/jvcleave/Desktop/RASPBERRY_PI/userland/interface/mmal/mmal_parameters_video.h
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
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines