Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (c) 2010, Texas Instruments Incorporated
      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
      7  * are met:
      8  *
      9  * *  Redistributions of source code must retain the above copyright
     10  *    notice, this list of conditions and the following disclaimer.
     11  *
     12  * *  Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * *  Neither the name of Texas Instruments Incorporated nor the names of
     17  *    its contributors may be used to endorse or promote products derived
     18  *    from this software without specific prior written permission.
     19  *
     20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 /* -------------------------------------------------------------------------- */
     34 /*
     35  * @file:Omx_ti_video.h
     36  * This header defines the structures specific to the param or config indices of Openmax Video Component.
     37  *
     38  * @path:
     39  * \WTSD_DucatiMMSW\ omx\omx_il_1_x\omx_core\
     40 
     41  * -------------------------------------------------------------------------- */
     42 
     43 /* =========================================================================
     44  *!
     45  *! Revision History
     46  *! =====================================================================
     47  *! 24-Dec-2008  Navneet         navneet (at) ti.com          Initial Version
     48  *! 14-Jul-2009  Radha Purnima   radhapurnima (at) ti.com
     49  *! 25-Aug-2009  Radha Purnima   radhapurnima (at) ti.com
     50  *! 16-May-2009  Shivaraj Shetty shettyshivaraj (at) ti.com
     51  * =========================================================================*/
     52 
     53 
     54 #ifndef OMX_TI_VIDEO_H
     55 #define OMX_TI_VIDEO_H
     56 #define H264ENC_MAXNUMSLCGPS 2
     57 #define OMXH264E_MAX_SLICE_SUPPORTED 64
     58 #include <OMX_Core.h>
     59 
     60 /**
     61  *	@brief	mode selection for the data that is given to the Codec
     62  */
     63 
     64 typedef enum OMX_VIDEO_DATASYNCMODETYPE {
     65     OMX_Video_FixedLength,	//!<  Interms of multiples of 4K
     66     OMX_Video_SliceMode,		//!<  Slice mode
     67     OMX_Video_NumMBRows,	//!< Number of rows, each row is 16 lines of video
     68     OMX_Video_EntireFrame  	//!< Processing of entire frame data
     69 } OMX_VIDEO_DATASYNCMODETYPE;
     70 
     71 
     72 /* ========================================================================== */
     73 /*!
     74  @brief OMX_TI_VIDEO_PARAM_DATAMODE  :to configure how the input and output data is fed to the Codec
     75  @param  nPortIndex  to specify the index of the port
     76  @param  eDataMode 	to specify the data mode
     77  						@sa  OMX_VIDEO_DATASYNCMODETYPE
     78  @param  nNumDataUnits	 to specify the number of data units (where units are of type defined by eDataMode)
     79  */
     80 /* ==========================================================================*/
     81 typedef struct OMX_VIDEO_PARAM_DATASYNCMODETYPE{
     82 	OMX_U32 nSize;
     83 	OMX_VERSIONTYPE nVersion;
     84 	OMX_U32 nPortIndex;
     85 	OMX_VIDEO_DATASYNCMODETYPE eDataMode;
     86 	OMX_U32 nNumDataUnits;
     87 } OMX_VIDEO_PARAM_DATASYNCMODETYPE;
     88 
     89 /**
     90  *	@brief	Aspect Ratio type selection for the encoded bit stream
     91  */
     92 typedef enum OMX_VIDEO_ASPECTRATIOTYPE{
     93 	OMX_Video_AR_Unspecified,  //!< Unspecified aspect ratio
     94 	OMX_Video_AR_Square ,  //!< 1:1 (square) aspect ratio
     95 	OMX_Video_AR_12_11  ,  //!<  12:11  aspect ratio
     96 	OMX_Video_AR_10_11  ,  //!<  10:11  aspect ratio
     97 	OMX_Video_AR_16_11  ,  //!<  16:11  aspect ratio
     98 	OMX_Video_AR_40_33  ,  //!<  40:33  aspect ratio
     99 	OMX_Video_AR_24_11  ,  //!<  24:11  aspect ratio
    100 	OMX_Video_AR_20_11  ,  //!<  20:11  aspect ratio
    101 	OMX_Video_AR_32_11  ,  //!<  32:11  aspect ratio
    102 	OMX_Video_AR_80_33  ,  //!<  80:33  aspect ratio
    103 	OMX_Video_AR_18_11  ,  //!<  18:11  aspect ratio
    104 	OMX_Video_AR_15_15  ,  //!<  15:15  aspect ratio
    105 	OMX_Video_AR_64_33  ,  //!<  64:33  aspect ratio
    106 	OMX_Video_AR_160_99 ,  //!<  160:99 aspect ratio
    107 	OMX_Video_AR_4_3    ,  //!<  4:3    aspect ratio
    108 	OMX_Video_AR_3_2    ,  //!<  3:2    aspect ratio
    109 	OMX_Video_AR_2_1    ,  //!<  2:1    aspect ratio
    110 	OMX_Video_AR_Extended = 255,       //!<  Extended aspect ratio
    111    	OMX_Video_AR_Extended_MAX =  0X7FFFFFFF
    112 }OMX_VIDEO_ASPECTRATIOTYPE;
    113 
    114 
    115 /* ========================================================================== */
    116 /*!
    117  @brief OMX_TI_VIDEO_PARAM_VUI_SELECT  :to select the VUI Settings
    118  @param  bAspectRatioPresent flag to indicate the insertion of aspect ratio information in VUI part of bit-stream
    119  @param  ePixelAspectRatio to specify the Aspect Ratio
    120  @param  bFullRange to indicate whether pixel value range is specified as full range or not (0 to 255)
    121 */
    122 /* ==========================================================================*/
    123 typedef struct OMX_VIDEO_PARAM_VUIINFOTYPE {
    124 	OMX_U32	 nSize;
    125 	OMX_VERSIONTYPE nVersion;
    126 	OMX_U32	 nPortIndex;
    127 	OMX_BOOL bAspectRatioPresent;
    128 	OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
    129 	OMX_BOOL bFullRange;
    130 }OMX_VIDEO_PARAM_VUIINFOTYPE;
    131 
    132 /* ========================================================================== */
    133 /*!
    134  @brief OMX_VIDEO_CONFIG_PIXELINFOTYPE  :to specify the information related to the input pixel data (aspect ratio & range) to the Codec
    135  										so that codec can incorporate this info in the coded bit stream
    136  @param  nWidth 	 to specify the Aspect ratio: width of the pixel
    137  @param  nHeight 	 to specify the Aspect ratio: height of the pixel
    138  */
    139 /* ==========================================================================*/
    140 typedef struct OMX_VIDEO_CONFIG_PIXELINFOTYPE  {
    141 	OMX_U32 nSize;
    142 	OMX_VERSIONTYPE nVersion;
    143 	OMX_U32 nPortIndex;
    144 	OMX_U32 nWidth;
    145 	OMX_U32 nHeight;
    146 } OMX_VIDEO_CONFIG_PIXELINFOTYPE;
    147 
    148 /* ========================================================================== */
    149 /*!
    150  @brief OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE : to configure what NALU  need to send along the frames of different types (Intra,IDR...etc)
    151  @param  nStartofSequence 	to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Start of sequence frame
    152  @param  nEndofSequence	 	to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the End of sequence frame
    153  @param  nIDR 				to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the IDR frame
    154  @param  nIntraPicture	  		to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Intra frame
    155  @param  nNonIntraPicture	  	to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Non Intra frame
    156 
    157 Bit Position:   13|       12|      11|           10|      9|    8|    7|   6|      5|         4|              3|              2|              1|          0
    158 NALU TYPE:  SPS_VUI|FILLER|EOSTREAM|EOSEQ|AUD|PPS|SPS|SEI|IDR_SLICE|SLICE_DP_C|SLICE_DP_B|SLICE_DP_A|SLICE|UNSPECIFIED \n
    159 */
    160 /* ==========================================================================*/
    161 typedef struct OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE {
    162 	OMX_U32	 nSize;
    163 	OMX_VERSIONTYPE nVersion;
    164 	OMX_U32	 	nPortIndex;
    165 	OMX_U32 	nStartofSequence;
    166 	OMX_U32 	nEndofSequence;
    167 	OMX_U32 	nIDR;
    168 	OMX_U32 	nIntraPicture;
    169 	OMX_U32 	nNonIntraPicture;
    170 }OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE;
    171 
    172 
    173 /* ========================================================================== */
    174 /*!
    175  @brief OMX_VIDEO_CONFIG_MESEARCHRANGETYPE : to configure Motion Estimation Parameters
    176  @param  eMVAccuracy 		to specify the Motion Vector Accuracy
    177  							@sa OMX_VIDEO_MOTIONVECTORTYPE
    178  @param  sHorSearchRangeP	 	to Specify the Horizontal Search range for P Frame
    179  @param  sVerSearchRangeP		to Specify the Vertical Search range for P Frame
    180  @param  sHorSearchRangeB	  	to Specify the Horizontal Search range for B Frame
    181  @param  sVerSearchRangeB	  	to Specify the Vertical Search range for B Frame
    182 */
    183 /* ==========================================================================*/
    184 typedef struct OMX_VIDEO_CONFIG_MESEARCHRANGETYPE{
    185 	OMX_U32	 nSize;
    186 	OMX_VERSIONTYPE nVersion;
    187 	OMX_U32	 nPortIndex;
    188 	OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
    189 	OMX_U32	 nHorSearchRangeP;
    190 	OMX_U32	 nVerSearchRangeP;
    191 	OMX_U32	 nHorSearchRangeB;
    192 	OMX_U32	 nVerSearchRangeB;
    193 }OMX_VIDEO_CONFIG_MESEARCHRANGETYPE;
    194 
    195 /**
    196  *	@brief	Block size specification
    197  */
    198 typedef enum OMX_VIDEO_BLOCKSIZETYPE {
    199 	OMX_Video_Block_Size_16x16=0,
    200 	OMX_Video_Block_Size_8x8,
    201 	OMX_Video_Block_Size_8x4,
    202 	OMX_Video_Block_Size_4x8,
    203 	OMX_Video_Block_Size_4x4,
    204    	OMX_Video_Block_Size_MAX =  0X7FFFFFFF
    205 }OMX_VIDEO_BLOCKSIZETYPE;
    206 
    207 /* ========================================================================== */
    208 /*!
    209  @brief OMX_VIDEO_PARAM_MEBLOCKSIZETYPE : to configure the Min Motion Estimation block size for P and B frames
    210  @param  eMinBlockSizeP 		to specify the Min Block size used for Motion Estimation incase of P Frames
    211  							@sa OMX_VIDEO_BLOCKSIZETYPE
    212  @param  eMinBlockSizeB	 	to specify the Min Block size used for Motion Estimation incase of B Frames
    213 */
    214 /* ==========================================================================*/
    215 typedef struct OMX_VIDEO_PARAM_MEBLOCKSIZETYPE{
    216 	OMX_U32	 nSize;
    217 	OMX_VERSIONTYPE nVersion;
    218 	OMX_U32	 nPortIndex;
    219 	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
    220 	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
    221 }OMX_VIDEO_PARAM_MEBLOCKSIZETYPE;
    222 
    223 /**
    224  *	@brief	to select the chroma component used for Intra Prediction
    225  */
    226 typedef enum OMX_VIDEO_CHROMACOMPONENTTYPE {
    227 	OMX_Video_Chroma_Component_Cr_Only=0,	//!< consider only Cr chroma component for Intra prediction
    228 	OMX_Video_Chroma_Component_Cb_Cr_Both,  //!< consider both (Cb & Cr) chroma components for Intra prediction
    229      OMX_Video_Chroma_Component_MAX =  0X7FFFFFFF
    230 }OMX_VIDEO_CHROMACOMPONENTTYPE;
    231 
    232 /* ========================================================================== */
    233 /*!
    234  @brief OMX_VIDEO_PARAM_INTRAPREDTYPE : to configure the Modes for the different block sizes during Intra Prediction
    235  @param  nLumaIntra4x4Enable 	 	to configure the Modes for 4x4 block size during luma intra prediction: bit position specifies the modes that are enabled/disabled
    236 								 HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
    237  @param  nLumaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    238  								HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
    239  @param  nLumaIntra16x16Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    240 								 PLANE|DC|HOR|VER
    241  @param  nChromaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    242 								 PLANE|DC|HOR|VER
    243  @param  eChromaComponentEnable	to select the chroma components used for the intra prediction
    244  								@sa OMX_VIDEO_CHROMACOMPONENTTYPE
    245 */
    246 /* ==========================================================================*/
    247 typedef struct OMX_VIDEO_PARAM_INTRAPREDTYPE{
    248 	OMX_U32	 nSize;
    249 	OMX_VERSIONTYPE nVersion;
    250 	OMX_U32	 nPortIndex;
    251 	OMX_U32	 nLumaIntra4x4Enable;
    252 	OMX_U32 nLumaIntra8x8Enable;
    253 	OMX_U32 nLumaIntra16x16Enable;
    254 	OMX_U32 nChromaIntra8x8Enable;
    255 	OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
    256 }OMX_VIDEO_PARAM_INTRAPREDTYPE;
    257 
    258 
    259 /**
    260  *	@brief	Encoding Mode Preset
    261  */
    262 typedef enum OMX_VIDEO_ENCODING_MODE_PRESETTYPE {
    263 	OMX_Video_Enc_Default=0, 	//!<  for all the params default values are taken
    264 	OMX_Video_Enc_High_Quality, //!<  todo: mention the parameters that takes specific values depending on this selection
    265 	OMX_Video_Enc_User_Defined,
    266 	OMX_Video_Enc_High_Speed_Med_Quality,
    267 	OMX_Video_Enc_Med_Speed_Med_Quality,
    268 	OMX_Video_Enc_Med_Speed_High_Quality,
    269 	OMX_Video_Enc_High_Speed,
    270    	OMX_Video_Enc_Preset_MAX =  0X7FFFFFFF
    271 }OMX_VIDEO_ENCODING_MODE_PRESETTYPE;
    272 
    273 /**
    274  *	@brief	Rate Control Preset
    275  */
    276 typedef enum OMX_VIDEO_RATECONTROL_PRESETTYPE {
    277 	OMX_Video_RC_Low_Delay,	//!<todo:  mention the parameters that takes specific values depending on this selection
    278 	OMX_Video_RC_Storage,
    279 	OMX_Video_RC_Twopass,
    280 	OMX_Video_RC_None,
    281 	OMX_Video_RC_User_Defined,
    282    	OMX_Video_RC_MAX =  0X7FFFFFFF
    283 }OMX_VIDEO_RATECONTROL_PRESETTYPE;
    284 
    285 /* ========================================================================== */
    286 /*!
    287  @brief OMX_VIDEO_PARAM_ENCODER_PRESETTYPE : to select the preset for Encoding Mode & Rate Control
    288  @param  eEncodingModePreset		to specify Encoding Mode Preset
    289  							@sa OMX_VIDEO_ENCODING_MODE_PRESETTYPE
    290  @param  eRateControlPreset	to specify Rate Control Preset
    291  							@sa OMX_VIDEO_RATECONTROL_PRESETTYPE
    292 */
    293 /* ==========================================================================*/
    294 typedef struct OMX_VIDEO_PARAM_ENCODER_PRESETTYPE{
    295 	OMX_U32	 nSize;
    296 	OMX_VERSIONTYPE nVersion;
    297 	OMX_U32	 nPortIndex;
    298 	OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
    299 	OMX_VIDEO_RATECONTROL_PRESETTYPE eRateControlPreset;
    300 }OMX_VIDEO_PARAM_ENCODER_PRESETTYPE;
    301 
    302 
    303 /**
    304  *	@brief	 input content type
    305  */
    306 typedef enum OMX_TI_VIDEO_FRAMECONTENTTYPE {
    307 	OMX_TI_Video_Progressive = 0,			//!<Progressive frame
    308 	OMX_TI_Video_Interlace_BothFieldsTogether = 1,	//!<Interlaced frame
    309 	OMX_TI_Video_Interlace_OneField = 2,
    310 	OMX_TI_Video_AVC_2004_StereoInfoType = 3,
    311 	OMX_TI_Video_AVC_2010_StereoFramePackingType = 4,
    312 	OMX_TI_Video_FrameContentType_MAX = 0x7FFFFFFF
    313 }OMX_TI_VIDEO_FRAMECONTENTTYPE;
    314 
    315 /**
    316  *	@brief	 Specifies the type of interlace content
    317  */
    318 typedef enum OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE {
    319 	OMX_TI_Video_Interlace_PICAFF = 0,	//!< PicAFF type of interlace coding
    320 	OMX_TI_Video_Interlace_MBAFF,		//!< MBAFF type of interlace coding
    321 	OMX_TI_Video_Interlace_Fieldonly,	//!< Field only coding
    322 	OMX_TI_Video_Interlace_Fieldonly_MRF=OMX_TI_Video_Interlace_Fieldonly,
    323 	OMX_TI_Video_Interlace_Fieldonly_ARF,
    324 	OMX_TI_Video_Interlace_Fieldonly_SPF,	//!< Field only coding where codec decides the partiy of the field to be used based upon content
    325 	OMX_Video_Interlace_MAX = 0x7FFFFFFF
    326 }OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE;
    327 
    328 /* ========================================================================== */
    329 /*!
    330  @brief OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE : to configure the data content
    331  @param  eContentType		to specify Content type
    332  							@sa OMX_VIDEO_FRAMECONTENTTYPE
    333 */
    334 /* ==========================================================================*/
    335 typedef struct OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE{
    336 	OMX_U32	 nSize;
    337 	OMX_VERSIONTYPE nVersion;
    338 	OMX_U32	 nPortIndex;
    339 	OMX_TI_VIDEO_FRAMECONTENTTYPE eContentType;
    340 }OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE;
    341 
    342 /* ========================================================================== */
    343 /*!
    344  @brief OMX_TI_VIDEO_PARAM_AVCINTERLACECODING : to configure the interlace encoding related settings
    345  @param  eInterlaceCodingType	to specify the settings of interlace content
    346  							@sa OMX_VIDEO_INTERLACE_CODINGTYPE
    347  @param  bTopFieldFirst				to specify the first field sent is top or bottom
    348  @param  bBottomFieldIntra		to specify codec that encode bottomfield also as intra or not
    349 */
    350 /* ==========================================================================*/
    351 typedef struct OMX_TI_VIDEO_PARAM_AVCINTERLACECODING{
    352 	OMX_U32	 nSize;
    353 	OMX_VERSIONTYPE nVersion;
    354 	OMX_U32	 nPortIndex;
    355 	OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE eInterlaceCodingType;
    356 	OMX_BOOL bTopFieldFirst;
    357 	OMX_BOOL bBottomFieldIntra;
    358 }OMX_TI_VIDEO_PARAM_AVCINTERLACECODING;
    359 /* ========================================================================== */
    360 /*!
    361  @brief OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004  : to configure the 2004 related stereo information type
    362 */
    363 /* ==========================================================================*/
    364 
    365 typedef struct OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004
    366 {
    367 	OMX_U32          nSize;
    368 	OMX_VERSIONTYPE  nVersion;
    369 	OMX_U32          nPortIndex;
    370 	OMX_BOOL         btopFieldIsLeftViewFlag;
    371 	OMX_BOOL         bViewSelfContainedFlag;
    372 } OMX_TI_VIDEO_AVCENC_STEREOINFO2004;
    373 
    374 typedef enum OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE{
    375 	OMX_TI_Video_FRAMEPACK_CHECKERBOARD        = 0,
    376 	OMX_TI_Video_FRAMEPACK_COLUMN_INTERLEAVING = 1,
    377 	OMX_TI_Video_FRAMEPACK_ROW_INTERLEAVING    = 2,
    378 	OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE        = 3,
    379 	OMX_TI_Video_FRAMEPACK_TOP_BOTTOM          = 4,
    380 	OMX_TI_Video_FRAMEPACK_TYPE_DEFAULT        = OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE,
    381 	OMX_TI_Video_FRAMEPACK_TYPE_MAX = 0x7FFFFFFF
    382 } OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE;
    383 
    384 /* ========================================================================== */
    385 /*!
    386  @brief OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010 : to configure the 2010 related stereo information type
    387 */
    388 /* ==========================================================================*/
    389 
    390 typedef struct OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010
    391 {
    392 	OMX_U32          nSize;
    393 	OMX_VERSIONTYPE nVersion;
    394 	OMX_U32          nPortIndex;
    395 	OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE eFramePackingType;
    396 	OMX_U8         nFrame0PositionX;
    397 	OMX_U8         nFrame0PositionY;
    398 	OMX_U8         nFrame1PositionX;
    399 	OMX_U8         nFrame1PositionY;
    400 }OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010;
    401 
    402 /**
    403  *	@brief	 Specifies Transform Block Size
    404  */
    405 typedef enum OMX_VIDEO_TRANSFORMBLOCKSIZETYPE {
    406 	OMX_Video_Transform_Block_Size_4x4 =0,	//!< Transform blocks size is 8x8 : Valid for only High Profile
    407 	OMX_Video_Transform_Block_Size_8x8,	//!< Transform blocks size is 4x4
    408 	OMX_Video_Transform_Block_Size_Adaptive, //!< Adaptive transform block size : encoder decides as per content
    409     OMX_Video_Transform_Block_Size_MAX =  0X7FFFFFFF
    410 }OMX_VIDEO_TRANSFORMBLOCKSIZETYPE;
    411 
    412 /* ========================================================================== */
    413 /*!
    414  @brief OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE : to select the Block Size used for transformation
    415  @param  eTransformBlocksize	to specify Block size used for transformation
    416  							@sa OMX_VIDEO_TRANSFORMBLOCKSIZETYPE
    417 */
    418 /* ==========================================================================*/
    419 
    420 typedef struct OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE{
    421 	OMX_U32	 nSize;
    422 	OMX_VERSIONTYPE nVersion;
    423 	OMX_U32	 nPortIndex;
    424 	OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
    425 }OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE;
    426 
    427 
    428 /* ========================================================================== */
    429 /*!
    430  @brief OMX_VIDEO_CONFIG_SLICECODINGTYPE : to configure the Slice Settings
    431  @param  eSliceMode	to specify the Slice mode
    432  							@sa OMX_VIDEO_AVCSLICEMODETYPE
    433  @param  nSlicesize to specify the sliceSize
    434 */
    435 /* ==========================================================================*/
    436 
    437 typedef struct OMX_VIDEO_CONFIG_SLICECODINGTYPE{
    438 	OMX_U32	 nSize;
    439 	OMX_VERSIONTYPE nVersion;
    440 	OMX_U32	 nPortIndex;
    441 	OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
    442 	OMX_U32	 nSlicesize;
    443 }OMX_VIDEO_CONFIG_SLICECODINGTYPE;
    444 
    445 /**
    446  *	@brief	 Specifies Slice Group Change Direction Flag
    447  */
    448 typedef enum OMX_VIDEO_SLIGRPCHANGEDIRTYPE{
    449   OMX_Video_Raster_Scan             = 0 , //!< 0 : Raster scan order
    450   OMX_Video_Clockwise              = 0 , //!< 0 : Clockwise (used for BOX OUT FMO Params)
    451   OMX_Video_Right                   = 0 , //!< 0 : RIGHT (Used for Wipe FMO type)
    452   OMX_Video_Reverse_Raster_Scan= 1 , //!< 1 : Reverse Raster Scan Order
    453   OMX_Video_Counter_Clockwise       = 1 , //!< 1 : Counter Clockwise (used for BOX OUT FMO Params)
    454   OMX_Video_Left                    = 1,  //!< 1 : LEFT (Used for Wipe FMO type)
    455   OMX_Video_Left_MAX =  0X7FFFFFFF
    456 } OMX_VIDEO_SLICEGRPCHANGEDIRTYPE;
    457 
    458 /* ========================================================================== */
    459 /*!
    460  @brief OMX_TI_VIDEO_PARAM_FMO_ADVANCEDSETTINGS : to configure the FMO Settings
    461  @param
    462 */
    463 /* ==========================================================================*/
    464 typedef struct OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE{
    465 	OMX_U32	 nSize;
    466 	OMX_VERSIONTYPE nVersion;
    467 	OMX_U32 nPortIndex;
    468 	OMX_U8 nNumSliceGroups;
    469 	OMX_U8 nSliceGroupMapType;
    470 	OMX_VIDEO_SLICEGRPCHANGEDIRTYPE eSliceGrpChangeDir;
    471 	OMX_U32 nSliceGroupChangeRate;
    472 	OMX_U32 nSliceGroupChangeCycle;
    473 	OMX_U32 nSliceGroupParams[H264ENC_MAXNUMSLCGPS] ;
    474 }OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE;
    475 
    476 /* ========================================================================== */
    477 /*!
    478  @brief OMX_TI_VIDEO_CONFIG_QPSETTINGS : to configure the Qp Settings of I, P &B Frames
    479  @param  nQpI
    480 */
    481 /* ==========================================================================*/
    482 
    483 typedef struct OMX_VIDEO_CONFIG_QPSETTINGSTYPE{
    484 	OMX_U32	 nSize;
    485 	OMX_VERSIONTYPE nVersion;
    486 	OMX_U32	 nPortIndex;
    487 	OMX_U32	 nQpI;
    488 	OMX_U32	 nQpMaxI;
    489 	OMX_U32	 nQpMinI;
    490 	OMX_U32	 nQpP;
    491 	OMX_U32	 nQpMaxP;
    492 	OMX_U32	 nQpMinP;
    493 	OMX_U32	 nQpOffsetB;
    494 	OMX_U32	 nQpMaxB;
    495 	OMX_U32	 nQpMinB;
    496 }OMX_VIDEO_CONFIG_QPSETTINGSTYPE;
    497 
    498 /* ========================================================================== */
    499 /*!
    500  @brief OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING : to configure the HRD
    501 	(Hypothetical Reference Decoder) related params
    502  @param  nInitialBufferLevel	Initial buffer level for HRD compliance
    503  @param  nHRDBufferSize		Hypothetical Reference Decoder buffer size
    504  @param  nTargetBitrate		Target bitrate to encode with
    505 */
    506 /* ==========================================================================*/
    507 
    508 typedef struct OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING {
    509 	OMX_U32     nSize;
    510 	OMX_VERSIONTYPE     nVersion;
    511 	OMX_U32    nPortIndex;
    512 	OMX_U32    nInitialBufferLevel;
    513 	OMX_U32    nHRDBufferSize;
    514 	OMX_U32    nTargetBitrate;
    515 } OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING;
    516 
    517 /* ========================================================================== */
    518 /*!
    519  @brief OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING : to configure the HRD
    520 	(Hypothetical Reference Decoder) related params
    521  @param  nHRDBufferSize		Hypothetical Reference Decoder Buffer Size
    522  @param  nEncodeBitrate		Target bitrate to encode with
    523 
    524 */
    525 /* ==========================================================================*/
    526 
    527 typedef struct OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING {
    528 	OMX_U32    nSize;
    529 	OMX_VERSIONTYPE     nVersion;
    530 	OMX_U32     nPortIndex;
    531 	OMX_U32     nHRDBufferSize;
    532 	OMX_U32     nEncodeBitrate;
    533 } OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING;
    534 
    535 /* ========================================================================= */
    536 /*!
    537  @brief OMX_TI_VIDEO_CODINGTYPE :
    538 	Extension to video coding type enum for VP6 and VP7
    539  @param
    540 */
    541 /* ==========================================================================*/
    542 
    543 typedef enum OMX_TI_VIDEO_CODINGTYPE {
    544 	OMX_VIDEO_CodingVP6 =
    545 		(OMX_VIDEO_CODINGTYPE) OMX_VIDEO_CodingVendorStartUnused +1,  /* VP6 */
    546 	OMX_VIDEO_CodingVP7, /* VP7 */
    547         OMX_TI_VIDEO_CodingSORENSONSPK, /* Sorenson spark*/
    548         OMX_VIDEO_CodingSVC,    /**< H.264/SVC */
    549 	OMX_VIDEO_CodingVP8 /* VP8 */
    550 }OMX_TI_VIDEO_CODINGTYPE;
    551 
    552 
    553 /* ========================================================================= */
    554 /*!
    555  @brief OMX_TI_VIDEO_MPEG4LEVELTYPE:
    556         Extension to MPEG-4 level to cater to level 6
    557  @param
    558 */
    559 /* ==========================================================================*/
    560 typedef enum OMX_TI_VIDEO_MPEG4LEVELTYPE {
    561         OMX_TI_VIDEO_MPEG4Level6  =
    562             (OMX_VIDEO_MPEG4LEVELTYPE) OMX_VIDEO_MPEG4LevelVendorStartUnused + 1
    563 } OMX_TI_VIDEO_MPEG4LEVELTYPE;
    564 
    565 
    566 
    567 /**
    568  *	@brief	 Specifies various intra refresh methods
    569  */
    570 typedef enum OMX_TI_VIDEO_INTRAREFRESHTYPE {
    571     OMX_TI_VIDEO_IntraRefreshNone = 0,
    572     OMX_TI_VIDEO_IntraRefreshCyclicMbs,
    573     OMX_TI_VIDEO_IntraRefreshCyclicRows,
    574     OMX_TI_VIDEO_IntraRefreshMandatory,
    575     OMX_TI_VIDEO_IntraRefreshMax = 0x7FFFFFFF
    576 } OMX_TI_VIDEO_INTRAREFRESHTYPE;
    577 
    578 
    579 /* ========================================================================== */
    580 /*!
    581  @brief OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE  : Configuration parameters for
    582                                                intra refresh settings
    583  @param  eRefreshMode		Various refresh modes supported
    584  @param  nIntraRefreshRate 	Intra refresh rate
    585 */
    586 /* ==========================================================================*/
    587 
    588 typedef struct OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE {
    589     OMX_U32 nSize;
    590     OMX_VERSIONTYPE nVersion;
    591     OMX_U32 nPortIndex;
    592     OMX_TI_VIDEO_INTRAREFRESHTYPE eRefreshMode;
    593     OMX_U32 nIntraRefreshRate;
    594 } OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE;
    595 
    596 
    597 /* ============================================================================= */
    598 /*!
    599  @brief OMX_TI_STEREODECINFO : Structure to access 2004 SEI message generated by
    600  H264 decoder as metatadata on its output port.
    601  */
    602 /* ============================================================================= */
    603 
    604 typedef struct OMX_TI_STEREODECINFO {
    605 	OMX_U32 nFieldViewsFlag;
    606 	OMX_U32 nTopFieldIsLeftViewFlag;
    607 	OMX_U32 nCurrentFrameIsLeftViewFlag;
    608 	OMX_U32 nNextFrameIsSecondViewFlag;
    609 	OMX_U32 nLeftViewSelfContainedFlag;
    610 	OMX_U32 nRightViewSelfContainedFlag;
    611 } OMX_TI_STEREODECINFO;
    612 
    613 typedef struct OMX_TI_FRAMEPACKINGDECINFO {
    614 	OMX_U32 nFramePackingArrangementId;
    615 	OMX_U32 nFramePackingArrangementRepetitionPeriod;
    616 	OMX_U8  nFramePackingArrangementCancelFlag;
    617 	OMX_U8  nFramePackingArrangementType;
    618 	OMX_U8  nQuincunxSamplingFlag;
    619 	OMX_U8  nContentInterpretationType;
    620 	OMX_U8  nSpatialFlippingFlag;
    621 	OMX_U8  nFrame0FlippedFlag;
    622 	OMX_U8  nFieldViewsFlag;
    623 	OMX_U8  nCurrentFrameIsFrame0Flag;
    624 	OMX_U8  nFrame0SelfContainedFlag;
    625 	OMX_U8  nFrame1SelfContainedFlag;
    626 	OMX_U8  nFrame0GridPositionX;
    627 	OMX_U8  nFrame0GridPositionY;
    628 	OMX_U8  nFrame1GridPositionX;
    629 	OMX_U8  nFrame1GridPositionY;
    630 	OMX_U8  nFramePackingArrangementReservedByte;
    631 	OMX_U8  nFramePackingArrangementExtensionFlag;
    632 } OMX_TI_FRAMEPACKINGDECINFO;
    633 
    634 /* ============================================================================= */
    635 /*!
    636  @brief OMX_TI_VIDEO_RANGEMAPPING : Structure to access luma and chroma range
    637                                     mapping generated by decoders as
    638                                     metatadata on its output port.
    639  @param nRangeMappingLuma     Luma scale factor for range mapping.
    640  @param nRangeMappingChroma   Chroma scale factor for range mapping.
    641 */
    642 /* ============================================================================= */
    643 
    644 typedef struct OMX_TI_VIDEO_RANGEMAPPING {
    645 	OMX_U32 nRangeMappingLuma;
    646 	OMX_U32 nRangeMappingChroma;
    647 } OMX_TI_VIDEO_RANGEMAPPING;
    648 
    649 /* ============================================================================= */
    650 /*!
    651  @brief OMX_TI_VIDEO_RESCALINGMATRIX : Structure to access rescaled
    652                                        width/height generated by decoders
    653                                        as metatadata on its output port.
    654  @param nScaledHeight   Scaled image width for post processing for decoder.
    655  @param nScaledWidth    Scaled image height for post processing for decoder.
    656 */
    657 /* ============================================================================= */
    658 
    659 typedef struct OMX_TI_VIDEO_RESCALINGMATRIX {
    660 	OMX_U32 nScaledHeight;
    661 	OMX_U32 nScaledWidth;
    662 } OMX_TI_VIDEO_RESCALINGMATRIX;
    663 
    664 
    665 /*==========================================================================*/
    666 /*!
    667  @brief OMX_TI_PARAM_PAYLOADHEADERFLAG : To specify the payload headerflag
    668                                          for VP6/VP7 decoder.
    669  @param bPayloadHeaderFlag      Flag - TRUE indicates that frame length and
    670                                 timestamp(for IVF format) will be part of
    671                                 frame input buffer.
    672                                 Flag - FALSE indecates that frame length and
    673                                 timestamp(for IVF format) will not be part of
    674                                 the input buffer.
    675 */
    676 /*==========================================================================*/
    677 
    678 typedef struct OMX_TI_PARAM_PAYLOADHEADERFLAG {
    679 	OMX_U32 nSize;
    680 	OMX_VERSIONTYPE nVersion;
    681 	OMX_BOOL bPayloadHeaderFlag;
    682 } OMX_TI_PARAM_PAYLOADHEADERFLAG;
    683 
    684 
    685 /*==========================================================================*/
    686 /*!
    687 @brief OMX_TI_PARAM_IVFFLAG : Suport added to handle IVF header Decoding Mode
    688 @param bIvfFlag               TRUE enables IVF decoding mode.
    689                               FALSE indicates bitstream format is non-IVF.
    690 */
    691 /*==========================================================================*/
    692 
    693 typedef struct OMX_TI_PARAM_IVFFLAG {
    694 	OMX_U32 nSize;
    695 	OMX_VERSIONTYPE nVersion;
    696 	OMX_BOOL bIvfFlag;
    697 } OMX_TI_PARAM_IVFFLAG;
    698 
    699 // A pointer to this struct is passed to OMX_SetParameter() when the extension
    700 // index "OMX.google.android.index.storeMetaDataInBuffers"
    701 // is given.
    702 //
    703 // When meta data is stored in the video buffers passed between OMX clients
    704 // and OMX components, interpretation of the buffer data is up to the
    705 // buffer receiver, and the data may or may not be the actual video data, but
    706 // some information helpful for the receiver to locate the actual data.
    707 // The buffer receiver thus needs to know how to interpret what is stored
    708 // in these buffers, with mechanisms pre-determined externally. How to
    709 // interpret the meta data is outside of the scope of this method.
    710 //
    711 // Currently, this is specifically used to pass meta data from video source
    712 // (camera component, for instance) to video encoder to avoid memcpying of
    713 // input video frame data. To do this, bStoreMetaDta is set to OMX_TRUE.
    714 // If bStoreMetaData is set to false, real YUV frame data will be stored
    715 // in the buffers. In addition, if no OMX_SetParameter() call is made
    716 // with the corresponding extension index, real YUV data is stored
    717 // in the buffers.
    718 typedef struct OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS {
    719     OMX_U32 nSize;
    720     OMX_VERSIONTYPE nVersion;
    721     OMX_U32 nPortIndex;
    722     OMX_BOOL bStoreMetaData;
    723 } OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS;
    724 
    725 
    726 /**
    727  * Interlaced Video Content format
    728  *
    729  * STRUCT MEMBERS:
    730  *  nSize      : Size of the structure in bytes
    731  *  nVersion   : OMX specification version information
    732  *  nPortIndex : Port that this structure applies to
    733  *  nFormat    : bitmapped value indentifying the interlaced formats supported by component
    734  *  nTimeStamp : temporal timestamp information for the second field
    735  */
    736 typedef struct OMX_TI_INTERLACEFORMATTYPE {
    737 	OMX_U32 nSize;
    738 	OMX_VERSIONTYPE nVersion;
    739 	OMX_U32 nPortIndex;
    740 	OMX_U32 nFormat;
    741 	OMX_TICKS nTimeStamp;
    742 } OMX_TI_INTERLACEFORMATTYPE;
    743 
    744 /**
    745  * Interlace format types
    746  */
    747 typedef enum OMX_TI_INTERLACETYPE {
    748 	OMX_InterlaceFrameProgressive= 0x00,
    749 	OMX_InterlaceInterleaveFrameTopFieldFirst= 0x01,
    750 	OMX_InterlaceInterleaveFrameBottomFieldFirst= 0x02,
    751 	OMX_InterlaceFrameTopFieldFirst= 0x04,
    752 	OMX_InterlaceFrameBottomFieldFirst= 0x08,
    753 	OMX_InterlaceInterleaveFieldTop= 0x10,
    754 	OMX_InterlaceInterleaveFieldBottom= 0x20,
    755 	OMX_InterlaceFmtMask= 0x7FFFFFFF
    756 } OMX_TI_INTERLACETYPE;
    757 
    758 /**
    759  * To query if the stream contains interlaced or progressive conten
    760  *
    761  * STRUCT MEMBERS:
    762  *  nSize             : Size of the structure in bytes
    763  *  nVersion          : OMX specification version information
    764  *  nPortIndex        : Port that this structure applies to
    765  *  bInterlaceFormat  : whether the stream contains interlace or progressive content
    766  *                        OMX_TRUE indicates interlace and OMX_FALSE indicates progressive
    767  *  nInterlaceFormats : bitmapped value identifying the interlace formats detected within the stream
    768  */
    769 typedef struct OMX_TI_STREAMINTERLACEFORMATTYPE {
    770 	OMX_U32 nSize;
    771 	OMX_VERSIONTYPE nVersion;
    772 	OMX_U32 nPortIndex;
    773 	OMX_BOOL bInterlaceFormat;
    774 	OMX_U32 nInterlaceFormats;
    775 } OMX_TI_STREAMINTERLACEFORMAT;
    776 
    777 /*
    778 @brief OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO : Structure to provide the configuration to compute min and max picture size
    779 @param minPicSizeRatio : This ratio is used to compute minimum picture size in the following manner,
    780 minPicSize = averagePicSize >> minPicSizeRatio. Allowed values are 1 to 4. Setting this to 0 will enable encoder chosen ratio.
    781 @param maxPicSizeRatio : This ratio is used to compute maximum picture size in the following manner,
    782 maxPicSize = averagePicSize * maxPicSizeRatio. Allowed values are 2 to 30. Setting this to 0 or 1 will enable encoder chosen ratio.
    783 */
    784 /* ============================================================================= */
    785 typedef struct OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO {
    786     OMX_U32         nSize;
    787     OMX_VERSIONTYPE nVersion;
    788     OMX_U32         nPortIndex;
    789     OMX_U16         minPicSizeRatio;
    790     OMX_U16         maxPicSizeRatio;
    791 } OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO;
    792 
    793 
    794 /*!====================================================================!
    795 
    796     Currently we only support SVC baseline profile
    797 
    798  * !====================================================================!*/
    799     typedef enum OMX_TI_VIDEO_SVCPROFILETYPE {
    800         OMX_VIDEO_SVCProfileBaseline            = 0x01,     /**< Baseline profile */
    801         OMX_VIDEO_SVCProfileHigh                = 0x02,     /**< High profile */
    802         OMX_VIDEO_SVCProfileHighIntra           = 0x03,     /**< High Intra profile */
    803         OMX_VIDEO_SVCProfileMax                 = 0x7FFFFFFF
    804     } OMX_TI_VIDEO_SVCPROFILETYPE;
    805 
    806 
    807 /*!====================================================================!
    808 
    809     Currently we support only SVC baseline profile upto level 4 for SVC encoder.
    810 
    811  * !====================================================================!*/
    812     typedef enum OMX_TI_VIDEO_SVCLEVELTYPE {
    813         OMX_VIDEO_SVCLevel1                     = 0x01,     /**< Level 1 */
    814         OMX_VIDEO_SVCLevel1b                    = 0x02,     /**< Level 1b */
    815         OMX_VIDEO_SVCLevel11                    = 0x04,     /**< Level 1.1 */
    816         OMX_VIDEO_SVCLevel12                    = 0x08,     /**< Level 1.2 */
    817         OMX_VIDEO_SVCLevel13                    = 0x10,     /**< Level 1.3 */
    818         OMX_VIDEO_SVCLevel2                     = 0x20,     /**< Level 2 */
    819         OMX_VIDEO_SVCLevel21                    = 0x40,     /**< Level 2.1 */
    820         OMX_VIDEO_SVCLevel22                    = 0x80,     /**< Level 2.2 */
    821         OMX_VIDEO_SVCLevel3                     = 0x100,    /**< Level 3 */
    822         OMX_VIDEO_SVCLevel31                    = 0x200,    /**< Level 3.1 */
    823         OMX_VIDEO_SVCLevel32                    = 0x400,    /**< Level 3.2 */
    824         OMX_VIDEO_SVCLevel4                     = 0x800,    /**< Level 4 */
    825         OMX_VIDEO_SVCLevel41                    = 0x1000,   /**< Level 4.1 */
    826         OMX_VIDEO_SVCLevel42                    = 0x2000,   /**< Level 4.2 */
    827         OMX_VIDEO_SVCLevel5                     = 0x4000,   /**< Level 5 */
    828         OMX_VIDEO_SVCLevel51                    = 0x8000,   /**< Level 5.1 */
    829         OMX_VIDEO_SVCLevelMax                   = 0x7FFFFFFF
    830     } OMX_TI_VIDEO_SVCLEVELTYPE;
    831 
    832 
    833     typedef struct OMX_VIDEO_SVC_STD_PARAMS {
    834         OMX_U32  nSliceHeaderSpacing;
    835         OMX_U32  nPFrames;
    836         OMX_U32  nBFrames;
    837         OMX_BOOL bUseHadamard;
    838         OMX_U32  nRefFrames;
    839         OMX_U32  nRefIdx10ActiveMinus1;
    840         OMX_U32  nRefIdx11ActiveMinus1;
    841         OMX_BOOL bEnableUEP;
    842         /* Not needed as per SVC encoder requirements
    843         OMX_BOOL                                bEnableFMO;
    844         OMX_BOOL                                bEnableASO;
    845         OMX_BOOL                                bEnableRS;
    846         */
    847         OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
    848         OMX_U32                     nAllowedPictureTypes;
    849         OMX_BOOL                    bFrameMBsOnly;
    850         OMX_BOOL                    bMBAFF;
    851         OMX_BOOL                    bEntropyCodingCABAC;
    852         OMX_BOOL                    bWeightedPPrediction;
    853         OMX_U32                     nWeightedBipredicitonMode;
    854         OMX_BOOL                    bconstIpred;
    855         OMX_BOOL                    bDirect8x8Inference;
    856         OMX_BOOL                    bDirectSpatialTemporal;
    857         OMX_U32                     nCabacInitIdc;
    858     } OMX_VIDEO_SVC_STD_PARAMS;
    859 
    860 
    861     typedef struct OMX_VIDEO_SVC_RECTTYPE {
    862         OMX_S32 nLeft;
    863         OMX_S32 nTop;
    864         OMX_U32 nWidth;
    865         OMX_U32 nHeight;
    866     } OMX_VIDEO_SVC_RECTTYPE;
    867 
    868 
    869     typedef struct OMX_VIDEO_SVC_BITRATETYPE {
    870         OMX_VIDEO_CONTROLRATETYPE eControlRate;
    871         OMX_U32                   nTargetBitrate;
    872     } OMX_VIDEO_SVC_BITRATETYPE;
    873 
    874 
    875     typedef struct OMX_VIDEO_SVC_MOTIONVECTORTYPE {
    876         OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
    877         OMX_BOOL                   bUnrestrictedMVs;
    878         OMX_BOOL                   bFourMV;
    879         OMX_S32                    sXSearchRange;
    880         OMX_S32                    sYSearchRange;
    881     } OMX_VIDEO_SVC_MOTIONVECTORTYPE;
    882 
    883 
    884     typedef struct OMX_VIDEO_SVC_QUANTIZATIONTYPE {
    885         OMX_U32 nQpI;
    886         OMX_U32 nQpP;
    887         OMX_U32 nQpB;
    888     } OMX_VIDEO_SVC_QUANTIZATIONTYPE;
    889 
    890 
    891     typedef struct OMX_VIDEO_SVC_INTRAREFRESHTYPE {
    892         OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
    893         OMX_U32                    nAirMBs;
    894         OMX_U32                    nAirRef;
    895         OMX_U32                    nCirMBs;
    896     } OMX_VIDEO_SVC_INTRAREFRESHTYPE;
    897 
    898 
    899     typedef struct OMX_VIDEO_SVC_VBSMCTYPE {
    900         OMX_BOOL b16x16;
    901         OMX_BOOL b16x8;
    902         OMX_BOOL b8x16;
    903         OMX_BOOL b8x8;
    904         OMX_BOOL b8x4;
    905         OMX_BOOL b4x8;
    906         OMX_BOOL b4x4;
    907     } OMX_VIDEO_SVC_VBSMCTYPE;
    908 
    909 
    910     typedef struct OMX_VIDEO_SVC_NALUCONTROLTYPE {
    911         OMX_U32 nStartofSequence;
    912         OMX_U32 nEndofSequence;
    913         OMX_U32 nIDR;
    914         OMX_U32 nIntraPicture;
    915         OMX_U32 nNonIntraPicture;
    916     }OMX_VIDEO_SVC_NALUCONTROLTYPE;
    917 
    918 
    919     typedef struct OMX_VIDEO_SVC_MEBLOCKSIZETYPE {
    920         OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
    921         OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
    922     }OMX_VIDEO_SVC_MEBLOCKSIZETYPE;
    923 
    924 
    925     typedef struct OMX_VIDEO_SVC_INTRAPREDTYPE {
    926         OMX_U32                       nLumaIntra4x4Enable;
    927         OMX_U32                       nLumaIntra8x8Enable;
    928         OMX_U32                       nLumaIntra16x16Enable;
    929         OMX_U32                       nChromaIntra8x8Enable;
    930         OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
    931     }OMX_VIDEO_SVC_INTRAPREDTYPE;
    932 
    933 
    934     typedef struct OMX_VIDEO_SVC_ENCODER_PRESETTYPE {
    935         OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
    936         OMX_VIDEO_RATECONTROL_PRESETTYPE   eRateControlPreset;
    937     }OMX_VIDEO_SVC_ENCODER_PRESETTYPE;
    938 
    939 
    940     typedef struct OMX_VIDEO_SVC_VUIINFOTYPE {
    941         OMX_BOOL                  bAspectRatioPresent;
    942         OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
    943         OMX_BOOL                  bFullRange;
    944     }OMX_VIDEO_SVC_VUIINFOTYPE;
    945 
    946 
    947     typedef struct OMX_VIDEO_SVC_HRDBUFFERSETTING {
    948         OMX_U32 nInitialBufferLevel;
    949         OMX_U32 nHRDBufferSize;
    950         OMX_U32 nTargetBitrate;
    951     }OMX_VIDEO_SVC_HRDBUFFERSETTING;
    952 
    953 
    954     typedef struct OMX_VIDEO_SVC_INTRAPERIOD {
    955         OMX_U32 nIDRPeriod;
    956         OMX_U32 nPFrames;
    957     } OMX_VIDEO_SVC_INTRAPERIOD;
    958 
    959 
    960     typedef struct OMX_VIDEO_SVC_PIXELINFOTYPE {
    961         OMX_U32 nWidth;
    962         OMX_U32 nHeight;
    963     } OMX_VIDEO_SVC_PIXELINFOTYPE;
    964 
    965 
    966     typedef struct OMX_VIDEO_SVC_MESEARCHRANGETYPE {
    967         OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
    968         OMX_U32                    nHorSearchRangeP;
    969         OMX_U32                    nVerSearchRangeP;
    970         OMX_U32                    nHorSearchRangeB;
    971         OMX_U32                    nVerSearchRangeB;
    972     }OMX_VIDEO_SVC_MESEARCHRANGETYPE;
    973 
    974 
    975     typedef struct OMX_VIDEO_SVC_QPSETTINGSTYPE {
    976         OMX_U32 nQpI;
    977         OMX_U32 nQpMaxI;
    978         OMX_U32 nQpMinI;
    979         OMX_U32 nQpP;
    980         OMX_U32 nQpMaxP;
    981         OMX_U32 nQpMinP;
    982         OMX_U32 nQpOffsetB;
    983         OMX_U32 nQpMaxB;
    984         OMX_U32 nQpMinB;
    985     }OMX_VIDEO_SVC_QPSETTINGSTYPE;
    986 
    987 
    988     typedef struct OMX_VIDEO_SVC_SLICECODINGTYPE {
    989         OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
    990         OMX_U32                    nSlicesize;
    991     }OMX_VIDEO_SVC_SLICECODINGTYPE;
    992 
    993 
    994     typedef struct OMX_VIDEO_EXEC_SVC_HRDBUFFERSETTING {
    995         OMX_U32 nHRDBufferSize;
    996         OMX_U32 nEncodeBitrate;
    997     }OMX_VIDEO_EXEC_SVC_HRDBUFFERSETTING;
    998 
    999 /**
   1000  * SVC params
   1001  *
   1002  * STRUCT MEMBERS:
   1003  *  nSize                     : Size of the structure in bytes
   1004  *  nVersion                  : OMX specification version information
   1005  *  nPortIndex                : Port that this structure applies to
   1006  *  nSliceHeaderSpacing       : Number of macroblocks between slice header, put
   1007  *                              zero if not used
   1008  *  nPFrames                  : Number of P frames between each I frame
   1009  *  nBFrames                  : Number of B frames between each I frame
   1010  *  bUseHadamard              : Enable/disable Hadamard transform
   1011  *  nRefFrames                : Max number of reference frames to use for inter
   1012  *                              motion search (1-16)
   1013  *  nRefIdxTrailing           : Pic param set ref frame index (index into ref
   1014  *                              frame buffer of trailing frames list), B frame
   1015  *                              support
   1016  *  nRefIdxForward            : Pic param set ref frame index (index into ref
   1017  *                              frame buffer of forward frames list), B frame
   1018  *                              support
   1019  *  bEnableUEP                : Enable/disable unequal error protection. This
   1020  *                              is only valid of data partitioning is enabled.
   1021  *  bEnableFMO                : Enable/disable flexible macroblock ordering
   1022  *  bEnableASO                : Enable/disable arbitrary slice ordering
   1023  *  bEnableRS                 : Enable/disable sending of redundant slices
   1024  *  eProfile                  : AVC profile(s) to use
   1025  *  eLevel                    : AVC level(s) to use
   1026  *  nAllowedPictureTypes      : Specifies the picture types allowed in the
   1027  *                              bitstream
   1028  *  bFrameMBsOnly             : specifies that every coded picture of the
   1029  *                              coded video sequence is a coded frame
   1030  *                              containing only frame macroblocks
   1031  *  bMBAFF                    : Enable/disable switching between frame and
   1032  *                              field macroblocks within a picture
   1033  *  bEntropyCodingCABAC       : Entropy decoding method to be applied for the
   1034  *                              syntax elements for which two descriptors appear
   1035  *                              in the syntax tables
   1036  *  bWeightedPPrediction      : Enable/disable weighted prediction shall not
   1037  *                              be applied to P and SP slices
   1038  *  nWeightedBipredicitonMode : Default weighted prediction is applied to B
   1039  *                              slices
   1040  *  bconstIpred               : Enable/disable intra prediction
   1041  *  bDirect8x8Inference       : Specifies the method used in the derivation
   1042  *                              process for luma motion vectors for B_Skip,
   1043  *                              B_Direct_16x16 and B_Direct_8x8 as specified
   1044  *                              in subclause 8.4.1.2 of the AVC spec
   1045  *  bDirectSpatialTemporal    : Flag indicating spatial or temporal direct
   1046  *                              mode used in B slice coding (related to
   1047  *                              bDirect8x8Inference) . Spatial direct mode is
   1048  *                              more common and should be the default.
   1049  *  nCabacInitIdx             : Index used to init CABAC contexts
   1050  *  eLoopFilterMode           : Enable/disable loop filter
   1051  */
   1052     typedef struct OMX_TI_VIDEO_PARAM_SVCTYPE {
   1053         OMX_U32         nSize;
   1054         OMX_VERSIONTYPE nVersion;
   1055         OMX_U32         nPortIndex;
   1056 
   1057         OMX_U32                nActualFrameWidth;
   1058         OMX_U32                nActualFrameHeight;
   1059         OMX_S32                nStride;
   1060         OMX_U32                xFramerate;
   1061         OMX_COLOR_FORMATTYPE   eColorFormat;
   1062         OMX_VIDEO_SVC_RECTTYPE sRecType;
   1063 
   1064         OMX_VIDEO_SVC_STD_PARAMS sBasicParams;
   1065 
   1066         OMX_U32                     nRefFrames;
   1067         OMX_TI_VIDEO_SVCPROFILETYPE eProfile;
   1068         OMX_TI_VIDEO_SVCLEVELTYPE   eLevel;
   1069 
   1070         OMX_U32                   xEncodeFramerate;
   1071         OMX_VIDEO_SVC_BITRATETYPE sBitRateParams;
   1072 
   1073         OMX_VIDEO_SVC_MOTIONVECTORTYPE sMotionVectorParams;
   1074         OMX_VIDEO_SVC_QUANTIZATIONTYPE sQuantizationParams;
   1075         OMX_VIDEO_SVC_INTRAREFRESHTYPE sIntraRefreshParams;
   1076         OMX_VIDEO_SVC_VBSMCTYPE        sVBSMCParams;
   1077 
   1078         //OMX_NALUFORMATSTYPE               eNaluFormat;
   1079         OMX_VIDEO_SVC_NALUCONTROLTYPE sNalUnitParams;
   1080 
   1081         OMX_VIDEO_SVC_MEBLOCKSIZETYPE    sMEBlockSizeParams;
   1082         OMX_VIDEO_SVC_INTRAPREDTYPE      sIntraPredParams;
   1083         OMX_VIDEO_SVC_ENCODER_PRESETTYPE sEncPresetParams;
   1084         OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
   1085         OMX_VIDEO_SVC_VUIINFOTYPE        sVUIInfoParams;
   1086         OMX_VIDEO_SVC_HRDBUFFERSETTING   sHRDBufferParams;
   1087 
   1088         OMX_U32 nNumTemporalLayers;
   1089         OMX_S32 nDependencyID;
   1090         OMX_S32 nQualityID;
   1091         //OMX_VIDEO_SVC_ENCODE_MODE         eModeOfEncode;
   1092 
   1093         OMX_U32 nErrorConcealmentMode;
   1094         OMX_U32 nDeblockFilterMode;
   1095     } OMX_TI_VIDEO_PARAM_SVCTYPE;
   1096 
   1097  typedef struct OMX_TI_VIDEO_CONFIG_SVCLAYERDETAILS {
   1098     OMX_U32         nSize;
   1099     OMX_VERSIONTYPE nVersion;
   1100     OMX_U32         nPortIndex;
   1101 
   1102     OMX_U32 nNumLayers;
   1103     OMX_U32 nLayerId;
   1104     OMX_U8  nPriorityId;
   1105     OMX_U8  nDependencyId;
   1106     OMX_U8  nQualityId;
   1107     OMX_U8  nTemporalId;
   1108     OMX_U8  nBitrateInfoPresentFlag;
   1109     OMX_U8  nFramerateInfoPresentFlag;
   1110     OMX_U8  nFramesizeInfoPresentFlag;
   1111     OMX_U16 nAvgBitrate;
   1112     OMX_U16 nMaxBitrate;
   1113     OMX_U16 nAvgFramerate;
   1114     OMX_U32 nFrameWidth;
   1115     OMX_U32 nFrameHeight;
   1116 
   1117     OMX_U32 nLayerIndex;     /* Used to query for individual layer details */
   1118 
   1119 } OMX_TI_VIDEO_CONFIG_SVCLAYERDETAILS;
   1120 
   1121 typedef struct OMX_TI_VIDEO_CONFIG_SVCTARGETLAYER {
   1122     OMX_U32         nSize;
   1123     OMX_VERSIONTYPE nVersion;
   1124     OMX_U32         nPortIndex;
   1125 
   1126     OMX_U32 nSvcTargetLayerDID;
   1127     OMX_U32 nSvcTargetLayerTID;
   1128     OMX_U32 nSvcTargetLayerQID;
   1129 
   1130 } OMX_TI_VIDEO_CONFIG_SVCTARGETLAYER;
   1131 /* ========================================================================== */
   1132 /*!
   1133 @brief OMX_TI_VIDEO_SLICEDATAINFO : to configure the Slice Settings
   1134 @param  nNumofSlices   number of validfields to be read
   1135 @param  nSliceSizeConfigured   variable that indicates the MaxSlice configured
   1136                                & (n*nSliceSizeConfigured) gives the buff offset
   1137                                for nth slice in the o/p buffer
   1138 @param  nSliceSize   gives the SliceSize
   1139 */
   1140 /* ==========================================================================*/
   1141 typedef struct OMX_TI_VIDEO_SLICEDATAINFO {
   1142     OMX_U32 nNumofSlices;
   1143     OMX_U32 nSliceSizeConfigured;
   1144     OMX_U32 nSliceSize[OMXH264E_MAX_SLICE_SUPPORTED];
   1145 } OMX_TI_VIDEO_SLICEDATAINFO;
   1146 /**
   1147 *	@brief	mode selection for the data that is given to the Codec
   1148  */
   1149 
   1150 typedef enum _OMX_VIDEO_AVCLTRMODE {
   1151   OMX_H264ENC_LTRP_NONE = 0,
   1152         /**< No longterm refernce frame in the sequnce
   1153            */
   1154   OMX_H264ENC_LTRP_REFERTOIDR = 1,
   1155           /**< Mark all the I frames as long term-reference frames and
   1156            * based on the frame control IH264ENC_Control, refere to
   1157            * a long-term reference frame (I frame).
   1158            */
   1159   OMX_H264ENC_LTRP_REFERTOP_PROACTIVE =2,
   1160           /**< Two long term frames are supported in this schme and
   1161            * long-term index marking and refernce frame update is done based
   1162            * the IH264ENC_Control values
   1163            */
   1164   OMX_H264ENC_LTRP_REFERTOP_REACTIVE = 3
   1165           /**< This is not supported in the current version of encoder
   1166            */
   1167 } OMX_VIDEO_AVCLTRMODE;
   1168 
   1169 
   1170 /* ============================================================================= */
   1171 /*
   1172 @brief OMX_TI_VIDEO_PARAM_AVC_LTRP : Structure to enable the configuration of Long Term reference Picture feature in H264 Encoder for the session
   1173 Enabling this parameter will instruct encoder to keep its recent I/IDR frame in its reference buffer list.
   1174 So it increases the DDR foot print by one frame buffer
   1175 @param eLTRMode	: enables the LongTerm Reference Picture, possible modes: 0, 1, 2
   1176 @param nLTRInterval : interval of the write indicating to codec interms of the frame number
   1177 */
   1178 /* ============================================================================= */
   1179 typedef struct OMX_TI_VIDEO_PARAM_AVC_LTRP{
   1180 	OMX_U32 nSize;
   1181 	OMX_VERSIONTYPE nVersion;
   1182 	OMX_U32 nPortIndex;
   1183 	OMX_VIDEO_AVCLTRMODE eLTRMode;
   1184 	OMX_U32 nLTRInterval;
   1185 } OMX_TI_VIDEO_PARAM_AVC_LTRP;
   1186 
   1187 /*
   1188 @brief OMX_TI_VIDEO_CONFIG_AVC_LTRP : Structure to provide the configuration to acknowledge successful decode of previous LTR
   1189 @param eLTRFrameDecoded	: tells the decoder that the LTR has been decoded successfully when set to TRUE
   1190 */
   1191 /* ============================================================================= */
   1192 typedef struct OMX_TI_VIDEO_CONFIG_AVC_LTRP{
   1193     OMX_U32 nSize;
   1194     OMX_VERSIONTYPE nVersion;
   1195     OMX_U32 nPortIndex;
   1196     OMX_BOOL bEnableNextLTR;
   1197 } OMX_TI_VIDEO_CONFIG_AVC_LTRP;
   1198 
   1199 /* ============================================================================= */
   1200 /*
   1201 @brief OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL : Structure to enable the update of the LTRP
   1202 Interval during runtime
   1203 @param nLTRInterval : interval of the write indicating to codec interms of the frame number
   1204 */
   1205 /* ============================================================================= */
   1206 typedef struct OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL{
   1207 	OMX_U32 nSize;
   1208 	OMX_VERSIONTYPE nVersion;
   1209 	OMX_U32 nPortIndex;
   1210 	OMX_U32 nLTRInterval;
   1211 } OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL;
   1212 
   1213 /* ============================================================================= */
   1214 /*
   1215 @brief OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL : Structure to enable timestamps in decode order
   1216             at i/p of decoders.
   1217 */
   1218 /* ============================================================================= */
   1219 typedef struct OMX_TI_PARAM_TIMESTAMP_IN_DECODE_ORDER{
   1220 	OMX_U32 nSize;
   1221 	OMX_VERSIONTYPE nVersion;
   1222         OMX_BOOL bEnabled;
   1223 } OMX_TI_PARAM_TIMESTAMP_IN_DECODE_ORDER;
   1224 
   1225 /* ============================================================================= */
   1226 /*
   1227 @brief OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE : Structure to enable dynamic update of frame rate
   1228 */
   1229 /* ============================================================================= */
   1230 typedef struct OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE {
   1231     OMX_U32         nSize;
   1232     OMX_VERSIONTYPE nVersion;
   1233     OMX_U32         nPortIndex;
   1234     OMX_BOOL        bEnableAutoVFRUpdate;
   1235     OMX_U32         nDiffThresholdtoUpdate;
   1236     OMX_U32         nMaxSessionFrameRate;
   1237 } OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE;
   1238 
   1239 /* ============================================================================= */
   1240 /*
   1241 @brief OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES : Structure to enable feature to skip grey output
   1242            frames which doesn't have proper reference.
   1243 */
   1244 /* ============================================================================= */
   1245 typedef struct OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES {
   1246     OMX_U32         nSize;
   1247     OMX_VERSIONTYPE nVersion;
   1248     OMX_BOOL        bEnabled;
   1249 } OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES;
   1250 
   1251 /* ============================================================================= */
   1252 /*
   1253 @brief OMX_TI_PARAM_DECMETADATA : Structure to enable different codec metadata
   1254            for video decoders.
   1255 */
   1256 /* ============================================================================= */
   1257 typedef struct OMX_TI_PARAM_DECMETADATA {
   1258     OMX_U32         nSize;
   1259     OMX_VERSIONTYPE nVersion;
   1260     OMX_U32         nPortIndex;
   1261     OMX_BOOL        bEnableMBInfo;
   1262     OMX_BOOL        bEnableTranscodeMode;
   1263     OMX_BOOL        bEnableSEIInfo;
   1264     OMX_BOOL        bEnableVUIInfo;
   1265 } OMX_TI_PARAM_DECMETADATA;
   1266 
   1267 /**
   1268  ******************************************************************************
   1269  *  @enum       OMX_TI_VIDEO_MBERRSTATUS
   1270  *  @brief      This enum indicates if a MB was in error or not
   1271  *
   1272  ******************************************************************************
   1273 */
   1274 typedef enum {
   1275     OMX_TI_VIDEO_MB_NOERROR = 0,
   1276     /**
   1277     *  MB was non-erroneous
   1278     */
   1279     OMX_TI_VIDEO_MB_ERROR = 1
   1280                             /**
   1281                             * MB was erroneous
   1282                             */
   1283 } OMX_TI_VIDEO_MBERRSTATUS;
   1284 
   1285 
   1286 /**
   1287  *  Macro definitions required for SEI support: HRD sequence parameter set
   1288  */
   1289 #define OMX_TI_VIDEO_H264VDEC_MAXCPBCNT        32
   1290 
   1291 /**
   1292  *  Macro definitions required for SEI support: HRD sequence parameter set
   1293  */
   1294 #define OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD 300
   1295 
   1296 /**
   1297  ******************************************************************************
   1298  *  @struct OMX_TI_VIDEO_H264VDEC_HrdParams
   1299  *
   1300  *  @brief  This structure contains the HRD parameter elements.
   1301  *
   1302  *  @param  cpb_cnt_minus1 : Number of alternative CPB specifications in the
   1303  *                           bit-stream
   1304  *  @param  bit_rate_scale : Together with bit_rate_value[i], it specifies the
   1305  *                           maximum input bit-rate for the ith CPB.
   1306  *  @param  cpb_size_scale : Together with cpb_size_value[i], specifies the
   1307  *                           maximum CPB size for the ith CPB.
   1308  *  @param  bit_rate_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Maximum input bitrate
   1309  *                                                     for the ith CPB
   1310  *  @param  cpb_size_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Maximum CPB size for the
   1311  *                                                     ith CPB
   1312  *  @param  vbr_cbr_flag[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Specifies the ith CPB is operated
   1313  *                          in Constant Bit-rate mode or variable bit-rate mode
   1314  *  @param  initial_cpb_removal_delay_length_minus1 :Length in bits of
   1315  *                                   initial_cpb_removal_length syntax element
   1316  *  @param  cpb_removal_delay_length_minus1 :Length in bits of
   1317  *                                      cpb_removal_delay_length syntax element
   1318  *  @param  dpb_output_delay_length_minus1 :Length in bits of
   1319  *                                       dpb_output_delay_length syntax element
   1320  *  @param  time_offset_length : Length in bits of time_offset syntax element
   1321  ******************************************************************************
   1322 */
   1323 typedef struct OMX_TI_VIDEO_H264VDEC_HrdParams {
   1324     OMX_U32 cpb_cnt_minus1;
   1325     OMX_U8  bit_rate_scale;
   1326     OMX_U8  cpb_size_scale;
   1327     OMX_U32 bit_rate_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1328     OMX_U32 cpb_size_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1329     OMX_U8  vbr_cbr_flag[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1330     OMX_U8  initial_cpb_removal_delay_length_minus1;
   1331     OMX_U8  cpb_removal_delay_length_minus1;
   1332     OMX_U8  dpb_output_delay_length_minus1;
   1333     OMX_U8  time_offset_length;
   1334 } OMX_TI_VIDEO_H264VDEC_HrdParams;
   1335 
   1336 /**
   1337  ******************************************************************************
   1338  *  @struct OMX_TI_VIDEO_H264VDEC_SVCVuiParams
   1339  *
   1340  *  @brief   This structure contains VUI  message syntax elements for scalable
   1341  *           video stream
   1342  *
   1343  *  @param  parsed_flag :1 - Indicates that in the current process call, c
   1344  *                            contents of the structure is updated
   1345  *                       0 - Indicates contents of the structure is not updated
   1346  *
   1347  *  @param  svc_vui_ext_num_entries_minus1:(svc_vui_ext_num_entries_minus1 + 1)
   1348  *                      specifies the number of information
   1349  *                        entries that are present in the SVC
   1350  *                      VUI parameters extension syntax
   1351  *                        structure
   1352  *  @param  svc_vui_ext_dependency_id:indicate the max value of DId for the
   1353  *                    i-th subset of coded video sequences
   1354  *  @param  svc_vui_ext_quality_id:indicate the max value of QId for the
   1355  *                    i-th subset of coded video sequences
   1356  *  @param  svc_vui_ext_temporal_id: indicate the max value of TId for the
   1357  *                    i-th subset of coded video sequences
   1358  *  @param  svc_vui_ext_timing_info_present_flag: Flag to tells that
   1359  *                          svc_vui_ext_num_units_in_tick,
   1360  *                          svc_vui_ext_time_scale,
   1361  *                          svc_vui_ext_fixed_frame_rate_flag
   1362  *                          are present for current coded
   1363  *                          sequence or not.
   1364  *  @param  svc_vui_ext_num_units_in_tick: specifies the value of num_units_in_tick
   1365  *  @param  svc_vui_ext_time_scale: specifies the value of time_scale
   1366  *  @param  svc_vui_ext_fixed_frame_rate_flag: specifies the value of
   1367  *                         fixed_frame_rate_flag
   1368  *  @param  svc_vui_ext_nal_hrd_parameters_present_flag:specifies the
   1369  *                value of nal_hrd_parameters_present_flag
   1370  *  @param  svc_vui_ext_vcl_hrd_parameters_present_flag: ] specifies the
   1371  *                value of vcl_hrd_parameters_present_flag
   1372  *  @param  svc_vui_ext_low_delay_hrd_flag: specifies the value
   1373  *          of low_delay_hrd_flag
   1374  *  @param  svc_vui_ext_pic_struct_present_flag: specifies the value
   1375  *           of pic_struct_present_flag
   1376  *
   1377  ******************************************************************************
   1378 */
   1379 
   1380 typedef struct sOMX_TI_VIDEO_H264VDEC_SVCVuiParams {
   1381     OMX_U32 parsed_flag;
   1382     OMX_U16 svc_vui_ext_num_entries_minus1;
   1383     OMX_U16 svc_vui_ext_dependency_id;
   1384     OMX_U16 svc_vui_ext_quality_id;
   1385     OMX_U16 svc_vui_ext_temporal_id;
   1386     OMX_U16 svc_vui_ext_timing_info_present_flag;
   1387     OMX_U32 svc_vui_ext_num_units_in_tick;
   1388     OMX_U32 svc_vui_ext_time_scale;
   1389     OMX_U16 svc_vui_ext_fixed_frame_rate_flag;
   1390     OMX_U16 svc_vui_ext_nal_hrd_parameters_present_flag;
   1391     OMX_U16 svc_vui_ext_vcl_hrd_parameters_present_flag;
   1392     OMX_U16 svc_vui_ext_low_delay_hrd_flag;
   1393     OMX_U16 svc_vui_ext_pic_struct_present_flag;
   1394 } OMX_TI_VIDEO_H264VDEC_SVCVuiParams;
   1395 
   1396 /**
   1397  ******************************************************************************
   1398  *  @struct OMX_TI_VIDEO_H264VDEC_VuiParams
   1399  *
   1400  *  @brief  This structure contains the VUI Sequence Parameter elements.
   1401  *
   1402  *  @param  parsed_flag :1 - Indicates that in the current process call, c
   1403  *                            contents of the structure is updated
   1404  *                       0 - Indicates contents of the structure is not updated
   1405  *  @param  aspect_ratio_info_present_flag :Indicates whether aspect ratio idc
   1406  *                                          is present or not.
   1407  *  @param  aspect_ratio_idc : Aspect ratio of Luma samples
   1408  *  @param  sar_width : Horizontal size of sample aspect ratio
   1409  *  @param  sar_height : Vertical size of sample aspect ratio
   1410  *  @param  overscan_info_present_flag : Cropped decoded pictures are suitable
   1411  *                                       for display or not.
   1412  *  @param  overscan_appropriate_flag : Overscan_appropriate_flag
   1413  *  @param  video_signal_type_present_flag : Flag indicates whether
   1414  *          video_format, video_full_range_flag and colour_description_present_
   1415  *          flag are present or not
   1416  *  @param  video_format :Video format indexed by a table. For example,PAL/NTSC
   1417  *  @param  video_full_range_flag : Black level, luma and chroma ranges. It
   1418  *                                  should be used for BT.601 compliance
   1419  *  @param  colour_description_present_flag:Indicates whether colour_primaries,
   1420  *                transfer_characteristics and matrix_coefficients are present.
   1421  *  @param  colour_primaries :Chromaticity co-ordinates of source primaries
   1422  *  @param  transfer_characteristics :Opto-electronic transfer characteristics
   1423  *          of the source picture
   1424  *  @param  matrix_coefficients :Matrix coefficients for deriving Luma and
   1425  *          chroma data from RGB components.
   1426  *  @param  chroma_location_info_present_flag : Flag indicates whether
   1427  *          chroma_sample_loc_type_top field and chroma_sample_loctype
   1428  *          bottom_field are present.
   1429  *  @param  chroma_sample_loc_type_top_field : Location of chroma_sample top
   1430  *          field
   1431  *  @param  chroma_sample_loc_type_bottom_field :Location of chroma_sample
   1432  *          bottom field
   1433  *  @param  timing_info_present_flag :Indicates whether num_units_in_tick,
   1434  *          time_scale, and fixed_frame_rate_flag are present.
   1435  *  @param  num_units_in_tick :Number of units of a clock that corresponds to 1
   1436  *          increment of a clock tick counter
   1437  *  @param  time_scale :Indicates actual increase in time for 1 increment of a
   1438  *          clock tick counter
   1439  *  @param  fixed_frame_rate_flag :Indicates how the temporal distance between
   1440  *          HRD output times of any two output pictures is constrained
   1441  *  @param  nal_hrd_parameters_present_flag :Indicates whether
   1442  *          nal_hrd_parameters are present
   1443  *  @param  nal_hrd_pars : NAL HRD Parameters
   1444  *  @param  vcl_hrd_parameters_present_flag :Indicates whether
   1445  *          vcl_hrd_parameters are present
   1446  *  @param  vcl_hrd_pars : VCL HRD Parameters
   1447  *  @param  low_delay_hrd_flag :HRD operational mode as in Annex C of the
   1448  *          standard
   1449  *  @param  pic_struct_present_flag :Indicates whether picture timing SEI
   1450  *          messages are present
   1451  *  @param  bitstream_restriction_flag :Indicates if the bit-stream restriction
   1452  *          parameters are present
   1453  *  @param  motion_vectors_over_pic_boundaries_flag :Specifies whether motion
   1454  *          vectors can point to regions outside the picture boundaries
   1455  *  @param  max_bytes_per_pic_denom :Maximum number of bytes not exceeded by
   1456  *          the sum of sizes of all VCL NAL units of a single coded picture
   1457  *  @param  max_bits_per_mb_denom :Maximum number of bits taken by any coded MB
   1458  *  @param  log2_max_mv_length_vertical :Maximum value of any motion vector\u2019s
   1459  *          vertical component
   1460  *  @param  log2_max_mv_length_horizontal :Maximum value of any motion vector\u2019s
   1461  *           horizontal component
   1462  *  @param  max_dec_frame_reordering :
   1463  *  @param  num_reorder_frames :Maximum number of frames that need to be
   1464  *          re-ordered
   1465  *  @param  max_dec_frame_buffering :Size of HRD decoded buffer (DPB) in terms
   1466  *          of frame buffers
   1467  *  @param  svcVuiParams :  struct instance of vui parameters for svc
   1468  *
   1469  ******************************************************************************
   1470 */
   1471 typedef struct OMX_TI_VIDEO_H264VDEC_VuiParams {
   1472     OMX_U32                            parsed_flag;
   1473     OMX_U8                             aspect_ratio_info_present_flag;
   1474     OMX_U32                            aspect_ratio_idc;
   1475     OMX_U32                            sar_width;
   1476     OMX_U32                            sar_height;
   1477     OMX_U8                             overscan_info_present_flag;
   1478     OMX_U8                             overscan_appropriate_flag;
   1479     OMX_U8                             video_signal_type_present_flag;
   1480     OMX_U8                             video_format;
   1481     OMX_U8                             video_full_range_flag;
   1482     OMX_U8                             colour_description_present_flag;
   1483     OMX_U8                             colour_primaries;
   1484     OMX_U8                             transfer_characteristics;
   1485     OMX_U8                             matrix_coefficients;
   1486     OMX_U8                             chroma_location_info_present_flag;
   1487     OMX_U32                            chroma_sample_loc_type_top_field;
   1488     OMX_U32                            chroma_sample_loc_type_bottom_field;
   1489     OMX_U8                             timing_info_present_flag;
   1490     OMX_U32                            num_units_in_tick;
   1491     OMX_U32                            time_scale;
   1492     OMX_U8                             fixed_frame_rate_flag;
   1493     OMX_U8                             nal_hrd_parameters_present_flag;
   1494     OMX_TI_VIDEO_H264VDEC_HrdParams    nal_hrd_pars;
   1495     OMX_U8                             vcl_hrd_parameters_present_flag;
   1496     OMX_TI_VIDEO_H264VDEC_HrdParams    vcl_hrd_pars;
   1497     OMX_U8                             low_delay_hrd_flag;
   1498     OMX_U8                             pic_struct_present_flag;
   1499     OMX_U8                             bitstream_restriction_flag;
   1500     OMX_U8                             motion_vectors_over_pic_boundaries_flag;
   1501     OMX_U32                            max_bytes_per_pic_denom;
   1502     OMX_U32                            max_bits_per_mb_denom;
   1503     OMX_U32                            log2_max_mv_length_vertical;
   1504     OMX_U32                            log2_max_mv_length_horizontal;
   1505     OMX_U32                            max_dec_frame_reordering;
   1506     OMX_U32                            num_reorder_frames;
   1507     OMX_U32                            max_dec_frame_buffering;
   1508     OMX_TI_VIDEO_H264VDEC_SVCVuiParams svcVuiParams;
   1509 } OMX_TI_VIDEO_H264VDEC_VuiParams;
   1510 
   1511 /**
   1512  ******************************************************************************
   1513  *  @struct OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT
   1514  *
   1515  *  @brief  This structure contains the user data SEI msg elements
   1516  *
   1517  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1518  *                           contents of the structure is updated
   1519  *                       0 - Indicates contents of the structure is not updated
   1520  *  @param  num_payload_bytes :Specifies the size of the payload
   1521  *  @param  itu_t_t35_country_code : A byte having a value specified as a
   1522  *                          country code by ITU-T Recommendation T.35 Annex A
   1523  *  @param  itu_t_t35_country_code_extension_byte :A byte having a value
   1524  *          specified as a country code by ITU-T Recommendation T.35 Annex B
   1525  *  @param  itu_t_t35_payload_byte[] : A byte containing data registered as
   1526  *          specified by ITU-T Recommendation T.35.
   1527  *  @param  dataOverflowFlag: This indicates if pay load data is more than the
   1528  *                            array size i.e., OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD.
   1529  ******************************************************************************
   1530 */
   1531 typedef struct OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT {
   1532     OMX_U32 parsed_flag;
   1533     OMX_U32 num_payload_bytes;
   1534     OMX_U8  itu_t_t35_country_code;
   1535     OMX_U8  itu_t_t35_country_code_extension_byte;
   1536     OMX_U8  itu_t_t35_payload_byte[OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD];
   1537     OMX_U8  dataOverflowFlag;
   1538 } OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT;
   1539 
   1540 /**
   1541  ******************************************************************************
   1542  *  @struct OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg
   1543  *
   1544  *  @brief  This structure contains the user data SEI msg elements
   1545  *
   1546  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1547  *                           contents of the structure is updated
   1548  *                       0 - Indicates contents of the structure is not updated
   1549  *  @param  num_payload_bytes :Specifies the size of the payload
   1550  *  @param  uuid_iso_iec_11578 :Value specified as a UUID according to the
   1551  *                              procedures of ISO/IEC 11578:1996 Annex A.
   1552  *  @param  user_data_payload_byte :Byte containing data having syntax and
   1553  *                                semantics as specified by the UUID generator.
   1554  *  @param  dataOverflowFlag: This indicates if pay load data is more than the
   1555  *                            array size i.e., OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD.
   1556  ******************************************************************************
   1557 */
   1558 typedef struct OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg {
   1559     OMX_U32 parsed_flag;
   1560     OMX_U32 num_payload_bytes;
   1561     OMX_U8  uuid_iso_iec_11578[16];
   1562     OMX_U8  user_data_payload_byte[OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD];
   1563     OMX_U8  dataOverflowFlag;
   1564 } OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg;
   1565 
   1566 
   1567 /**
   1568  ******************************************************************************
   1569  *  @struct OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod
   1570  *
   1571  *  @brief   This structure contains the buffering period SEI msg elements
   1572  *
   1573  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1574  *                           contents of the structure is updated
   1575  *                       0 - Indicates contents of the structure is not updated
   1576  *  @param  seq_parameter_set_id :Specifies the sequence parameter set that
   1577  *                                contains the sequence HRD attributes
   1578  *  @param  nal_cpb_removal_delay :Specifies the delay for the indexed NAL CPB
   1579  *          between the time of arrival in the CPB of the first bit of the
   1580  *          coded data associated with the access unit associated with the
   1581  *          buffering period SEI message and the time of removal from the CPB
   1582  *          of the coded data associated with the same access unit, for the
   1583  *          first buffering period after HRD initialization.
   1584  *  @param  nal_cpb_removal_delay_offset :Used for the indexed NAL CPB in
   1585  *          combination with the cpb_removal_delay to specify the initial
   1586  *          delivery time of coded access units to the CPB
   1587  *  @param  vcl_cpb_removal_delay :Specifies the delay for the indexed VCL CPB
   1588  *          between the time of arrival in the CPB of the first bit of the
   1589  *          coded data associated with the access unit associated with the
   1590  *          buffering period SEI message and the time of removal from the CPB
   1591  *          of the coded data associated with the same access unit, for the
   1592  *          first buffering period after HRD initialization.
   1593  *  @param  vcl_cpb_removal_delay_offset :Used for the indexed VCL CPB in
   1594  *          combination with the cpb_removal_delay to specify the initial
   1595  *          delivery time of coded access units to the CPB
   1596  ******************************************************************************
   1597 */
   1598 typedef struct OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod {
   1599     OMX_U32 parsed_flag;
   1600     OMX_U32 seq_parameter_set_id;
   1601     OMX_U32 nal_cpb_removal_delay[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1602     OMX_U32 nal_cpb_removal_delay_offset[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1603     OMX_U32 vcl_cpb_removal_delay[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1604     OMX_U32 vcl_cpb_removal_delay_offset[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
   1605 }OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod;
   1606 /**
   1607  ******************************************************************************
   1608  *  @struct OMX_TI_VIDEO_H264VDEC_SeiPanScanRect
   1609  *
   1610  *  @brief   This structure contains the pan scan rectangle SEI msg elements
   1611  *
   1612  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1613  *                           contents of the structure is updated
   1614  *                       0 - Indicates contents of the structure is not updated
   1615  *  @param  pan_scan_rect_id :Specifies an identifying number that may be used
   1616  *                            to identify the purpose of the pan-scan rectangle
   1617  *  @param  pan_scan_rect_cancel_flag :Equal to 1 indicates that the SEI
   1618  *                    message cancels the persistence of any previous pan-scan
   1619  *                    rectangle SEI message in output order.
   1620  *                    pan_scan_rect_cancel_flag equal to 0 indicates that
   1621  *                    pan-scan rectangle information follows.
   1622  *  @param  pan_scan_cnt_minus1 :Specifies the number of pan-scan rectangles
   1623  *          that are present in the SEI message
   1624  *  @param  pan_scan_rect_left_offset :Specifies as signed integer quantities
   1625  *          in units of one-sixteenth sample spacing relative to the luma
   1626  *          sampling grid, the location of the pan-scan rectangle
   1627  *  @param  pan_scan_rect_right_offset :Specifies as signed integer quantities
   1628  *          in units of one-sixteenth sample spacing relative to the luma
   1629  *          sampling grid, the location of the pan-scan rectangle
   1630  *  @param  pan_scan_rect_top_offset : Top offset
   1631  *  @param  pan_scan_rect_bottom_offset : Bottom offset
   1632  *  @param  pan_scan_rect_repetition_period :Specifies the persistence of the
   1633  *          pan-scan rectangle SEI message and may specify a picture order
   1634  *          count interval within which another pan-scan rectangle SEI message
   1635  *          with the same value of pan_scan_rect_id or the end of the coded
   1636  *          video sequence shall be present in the bit-stream
   1637  ******************************************************************************
   1638 */
   1639 typedef struct OMX_TI_VIDEO_H264VDEC_SeiPanScanRect {
   1640     OMX_U32 parsed_flag;
   1641     OMX_U32 pan_scan_rect_id;
   1642     OMX_U32 pan_scan_rect_cancel_flag;
   1643     OMX_U32 pan_scan_cnt_minus1;
   1644     OMX_S32 pan_scan_rect_left_offset[3];
   1645     OMX_S32 pan_scan_rect_right_offset[3];
   1646     OMX_S32 pan_scan_rect_top_offset[3];
   1647     OMX_S32 pan_scan_rect_bottom_offset[3];
   1648     OMX_U32 pan_scan_rect_repetition_period;
   1649 } OMX_TI_VIDEO_H264VDEC_SeiPanScanRect;
   1650 
   1651 /**
   1652  ******************************************************************************
   1653  *  @struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart
   1654  *
   1655  *  @brief  This structure contains the progressive refinement start SEI msg
   1656  *          elements
   1657  *
   1658  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1659  *                           contents of the structure is updated
   1660  *                       0 - Indicates contents of the structure is not updated
   1661  *  @param  progressive_refinement_id :Specifies an identification number for
   1662  *          the progressive refinement operation.
   1663  *  @param  num_refinement_steps_minus1 :Specifies the number of reference
   1664  *          frames in the tagged set of consecutive coded pictures
   1665  ******************************************************************************
   1666 */
   1667 typedef struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart {
   1668     OMX_U32 parsed_flag;
   1669     OMX_U32 progressive_refinement_id;
   1670     OMX_U32 num_refinement_steps_minus1;
   1671 } OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart;
   1672 /**
   1673  ******************************************************************************
   1674  *  @struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd
   1675  *
   1676  *  @brief  TThis structure contains the progressive refinement end SEI msg
   1677  *          elements
   1678  *
   1679  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1680  *                           contents of the structure is updated
   1681  *                       0 - Indicates contents of the structure is not updated
   1682  *  @param  progressive_refinement_id :Specifies an identification number for
   1683  *                    the progressive refinement operation.
   1684  ******************************************************************************
   1685 */
   1686 typedef struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd {
   1687     OMX_U32 parsed_flag;
   1688     OMX_U32 progressive_refinement_id;
   1689 } OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd;
   1690 /**
   1691  ******************************************************************************
   1692  *  @struct OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo
   1693  *
   1694  *  @brief  This structure contains the sRecovery Point Info SEI msg elements
   1695  *
   1696  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1697  *                           contents of the structure is updated
   1698  *                       0 - Indicates contents of the structure is not updated
   1699  *  @param  exact_match_flag :Indicates whether decoded pictures at and
   1700  *          subsequent to the specified recovery point in output order derived
   1701  *          by starting the decoding process at the access unit associated with
   1702  *          the recovery point SEI message, will be an exact match to the
   1703  *          pictures that would be produced by starting the decoding process
   1704  *        at the location of a previous IDR access unit in the NAL unit stream.
   1705  *  @param  recovery_frame_cnt :Specifies the recovery point of output pictures
   1706  *          in output order
   1707  *  @param  broken_link_flag :Indicates the presence or absence of a broken
   1708  *                            link in the NAL unit stream
   1709  *  @param  changing_slice_group_idc :Indicates whether decoded pictures are
   1710  *          correct or approximately correct in content at and subsequent to
   1711  *          the recovery point in output order when all macro-blocks of the
   1712  *          primary coded pictures are decoded within the changing slice group
   1713  *          period.
   1714  ******************************************************************************
   1715 */
   1716 typedef struct OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo {
   1717     OMX_U32 parsed_flag;
   1718     OMX_U32 recovery_frame_cnt;
   1719     OMX_U32 exact_match_flag;
   1720     OMX_U32 broken_link_flag;
   1721     OMX_U32 changing_slice_group_idc;
   1722 } OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo;
   1723 
   1724 /**
   1725  ******************************************************************************
   1726  *  @struct OMX_TI_VIDEO_H264VDEC_SeiPictureTiming
   1727  *
   1728  *  @brief  This structure contains the picture timing SEI msg elements
   1729  *
   1730  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1731  *                           contents of the structure is updated
   1732  *                       0 - Indicates contents of the structure is not updated
   1733  *  @param     NumClockTs :
   1734  *  @param     cpb_removal_delay :Specifies how many clock ticks to wait after
   1735  *               removal from the CPB of the access unit associated with the
   1736  *               most recent buffering period SEI message before removing from
   1737  *               the buffer the access unit data associated with the picture
   1738  *               timing SEI message.
   1739  *  @param     dpb_output_delay : Used to compute the DPB output time of the
   1740  *               picture.
   1741  *  @param     pic_struct : Indicates whether a picture  should be displayed as
   1742  *               a frame or field
   1743  *  @param     clock_time_stamp_flag[4]:1 - Indicates number of clock timestamp
   1744  *                            syntax elements present and follow immediately
   1745  *                            0 \u2013 Indicates associated clock timestamp syntax
   1746  *                                elements not present
   1747  *  @param     ct_type[4] : Indicates the scan type(interlaced or progressive)
   1748  *                          of the source material
   1749  *  @param     nuit_field_based_flag[4] : Used to calculate the clockTimestamp
   1750  *  @param     counting_type[4] : Specifies the method of dropping values of
   1751  *                                n_frames
   1752  *  @param     full_timestamp_flag[4] : 1 - Specifies that the n_frames syntax
   1753  *                                      element is followed by seconds_value,
   1754  *                                      minutes_value, and hours_value.
   1755  *                                      0 - Specifies that the n_frames syntax
   1756  *                                      element is followed by seconds_flag
   1757  *  @param     discontinuity_flag[4] : Indicates whether the difference between
   1758  *               the current value of clockTimestamp and the value of
   1759  *               clockTimestamp computed from the previous clockTimestamp in
   1760  *               output order can be interpreted as the time difference between
   1761  *               the times of origin or capture of the associated frames or
   1762  *               fields.
   1763  *  @param     cnt_dropped_flag[4] : Specifies the skipping of one or more
   1764  *               values of n_frames using the counting method
   1765  *  @param     n_frames[4] : Specifies the value of nFrames used to compute
   1766  *                            clockTimestamp.
   1767  *  @param     seconds_flag[4] : equal to 1 specifies that seconds_value and
   1768  *                               minutes_flag are present when
   1769  *                               full_timestamp_flag is equal to 0.
   1770  *  @param     minutes_flag[4] : equal to 1 specifies that minutes_value and
   1771  *                              hours_flag are present when full_timestamp_flag
   1772  *                              is equal to 0 and seconds_flag is equal to 1.
   1773  *  @param     hours_flag[4] :  equal to 1 specifies that hours_value is
   1774  *                              present when full_timestamp_flag is equal to 0
   1775  *                              and seconds_flag is equal to 1 and minutes_flag
   1776  *                              is equal to 1.
   1777  *  @param     seconds_value[4] : Specifies the value of sS used to compute
   1778  *                                clockTimestamp.
   1779  *  @param     minutes_value[4] : Specifies the value of mM used to compute
   1780  *                                clockTimestamp.
   1781  *  @param     hours_value[4] : Specifies the value of tOffset used to compute
   1782  *                              clockTimestamp
   1783  *  @param     time_offset[4] : Specifies the value of tOffset used to compute
   1784  *                              clockTimestamp
   1785  ******************************************************************************
   1786 */
   1787 typedef struct OMX_TI_VIDEO_H264VDEC_SeiPictureTiming {
   1788     OMX_U32 parsed_flag;
   1789     OMX_U32 NumClockTs;
   1790     OMX_U32 cpb_removal_delay;
   1791     OMX_U32 dpb_output_delay;
   1792     OMX_U32 pic_struct;
   1793     OMX_U32 clock_time_stamp_flag[4];
   1794     OMX_U32 ct_type[4];
   1795     OMX_U32 nuit_field_based_flag[4];
   1796     OMX_U32 counting_type[4];
   1797     OMX_U32 full_timestamp_flag[4];
   1798     OMX_U32 discontinuity_flag[4];
   1799     OMX_U32 cnt_dropped_flag[4];
   1800     OMX_U32 n_frames[4];
   1801     OMX_U32 seconds_flag[4];
   1802     OMX_U32 minutes_flag[4];
   1803     OMX_U32 hours_flag[4];
   1804     OMX_U32 seconds_value[4];
   1805     OMX_U32 minutes_value[4];
   1806     OMX_U32 hours_value[4];
   1807     OMX_S32 time_offset[4];
   1808 }OMX_TI_VIDEO_H264VDEC_SeiPictureTiming;
   1809 /**
   1810  ******************************************************************************
   1811  *  @struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep
   1812  *
   1813  *  @brief  This structure contains the full frmae freeze repetition SEI msg
   1814  *          elements
   1815  *
   1816  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1817  *                           contents of the structure is updated
   1818  *                       0 - Indicates contents of the structure is not updated
   1819  *  @param  full_frame_freeze_repetition_period :Specifies the persistence of
   1820  *            the full-frame freeze SEI message
   1821  ******************************************************************************
   1822 */
   1823 typedef struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep {
   1824     OMX_U32 parsed_flag;
   1825     OMX_U32 full_frame_freeze_repetition_period;
   1826 } OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep;
   1827 
   1828 /**
   1829  ******************************************************************************
   1830  *  @struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel
   1831  *
   1832  *  @brief   This structure contains frame freeze release SEI msg elements
   1833  *
   1834  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1835  *                           contents of the structure is updated
   1836  *                       0 - Indicates contents of the structure is not updated
   1837  *  @param  payloadSize : Size of the frame_freeze_release payload
   1838  ******************************************************************************
   1839 */
   1840 typedef struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel {
   1841     OMX_U32 parsed_flag;
   1842     OMX_U32 payloadSize;
   1843 } OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel;
   1844 
   1845 /**
   1846  ******************************************************************************
   1847  *  @struct OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo
   1848  *
   1849  *  @brief   This structure contains stereo video information SEI msg elements
   1850  *
   1851  *  @param  parsed_flag :1 - Indicates that in the current process call,
   1852  *                           contents of the structure is updated
   1853  *                       0 - Indicates contents of the structure is not updated
   1854  *  @param  field_views_flag :   1 - indicates that all pictures in the current
   1855  *                  coded video sequence are fields
   1856  *                0 - indicates that all pictures in the current
   1857  *                  coded video sequence are frames.
   1858  *  @param  top_field_is_left_view_flag :
   1859  *                1 - top field is a left  view.
   1860  *                0 - topfield is right view.
   1861  *  @param  current_frame_is_left_view_flag :
   1862  *                1 - current frame is left view.
   1863  *                0 - current frame is right view.
   1864  *  @param  next_frame_is_second_view_flag :
   1865  *                1 - current picture and a next picture in
   1866  *                  output order form a stereo video pair.
   1867  *                0 - current picture and a previous picture in
   1868  *                  output order form a stereo video pair.
   1869  *  @param  left_view_self_contained_flag :
   1870  *                1 - it will not use right view as a reference
   1871  *                  picture for inter prediction
   1872  *                0 - it may use right view as a reference
   1873  *                  picture for inter prediction.
   1874  *  @param  right_view_self_contained_flag :
   1875  *                1 - it will not use left view as a reference
   1876  *                  picture for inter prediction
   1877  *                0 - it may use left view as a reference
   1878  *                  picture for inter prediction.
   1879  ******************************************************************************
   1880 */
   1881 typedef struct OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo {
   1882     OMX_U32 parsed_flag;
   1883     OMX_U32 field_views_flag;
   1884     OMX_U32 top_field_is_left_view_flag;
   1885     OMX_U32 current_frame_is_left_view_flag;
   1886     OMX_U32 next_frame_is_second_view_flag;
   1887     OMX_U32 left_view_self_contained_flag;
   1888     OMX_U32 right_view_self_contained_flag;
   1889 } OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo;
   1890 
   1891 /**
   1892  ******************************************************************************
   1893  *  @struct OMX_TI_VIDEO_H264VDEC_SeiFramePacking
   1894  *
   1895  *  @brief  This structure contains frame packing arrangement SEI msg elements
   1896  *
   1897  *  @param  frame_packing_arrangement_id :
   1898  *                contains an identifying number that may be used to identify
   1899  *                the usage of the frame packing arrangement SEI message.
   1900  *  @param  frame_packing_arrangement_cancel_flag :
   1901  *                1 - equal to 1 indicates that the frame packing arrangement
   1902  *                    SEI message cancels the persistence of any previous frame
   1903  *                    packing arrangement SEI message in output order.
   1904  *                0 - indicates that frame packing arrangement info follows
   1905  *  @param  frame_packing_arrangement_type :
   1906  *                indicates the type of packing arrangement of the frames
   1907  *  @param  quincunx_sampling_flag :
   1908  *                1 - indicates that each color component plane of each
   1909  *                    constituent frame is quincunx sampled
   1910  *                0 - indicates that each color component plane of each
   1911  *                    constituent frame is not quincunx sampled
   1912  *  @param  content_interpretation_type :
   1913  *                1 - frame 0 being associated with the left view and frame 1
   1914  *                    being associated with the right view
   1915  *                2 - frame 0 being associated with the right view and frame 1
   1916  *                    being associated with the left view
   1917  *  @param  spatial_flipping_flag :
   1918  *                1 - spatial flipping is enabled for any one of the frame
   1919  *                    constituent, if frame_packing_arrangement_type is 3 or 4.
   1920  *                0 - spatial flipping is disabled for any one of the frame
   1921  *                    constituent, if frame_packing_arrangement_type is 3 or 4.
   1922  *  @param  frame0_flipped_flag :
   1923  *                1 - frame 0 is spatially flipped
   1924  *                0 - frame 1 is spatially flipped
   1925  *  @param  field_views_flag :
   1926  *                1 - indicates that all pictures in the current coded video
   1927  *                   sequence are coded as complementary field pairs.
   1928  *                0 - indicates that all pictures in the current coded video
   1929  *                   sequence are coded as frame.
   1930  *  @param  current_frame_is_frame0_flag :
   1931  *                1 - indicates that the current decoded frame is constituent
   1932  *                    frame 0 and the next decoded frame in output order
   1933  *                    is constituent frame 1.
   1934  *                0 - indicates that the current decoded frame is constituent
   1935  *                    frame 1 and the next decoded frame in output order
   1936  *                    is constituent frame 0.
   1937  *  @param  frame0_self_contained_flag :
   1938  *                1 - indicates that the constituent frame 0 is dependent on
   1939  *                    constituent frame 1 in decoding process
   1940  *                0 - indicates that the constituent frame 0 may dependent on
   1941  *                    constituent frame 1 in decoding process
   1942  *  @param  frame1_self_contained_flag :
   1943  *                1 - indicates that the constituent frame 1 is dependent on
   1944  *                    constituent frame 0 in decoding process
   1945  *                0 - indicates that the constituent frame 1 may dependent on
   1946  *                    constituent frame 0 in decoding process
   1947  *  @param  frame0_grid_position_x :
   1948  *                specifies the horizontal location of the upper left
   1949  *                sample of constituent frame 0 in the units of one
   1950  *                sixteenth of the luma samples
   1951  *  @param  frame0_grid_position_y :
   1952  *                specifies the vertical location of the upper left
   1953  *                sample of constituent frame 0 in the units of one
   1954  *                sixteenth of the luma samples
   1955  *  @param  frame1_grid_position_x :
   1956  *                specifies the horizontal location of the upper left
   1957  *                sample of constituent frame 1 in the units of one
   1958  *                sixteenth of the luma samples
   1959  *  @param  frame1_grid_position_y :
   1960  *                specifies the vertical location of the upper left
   1961  *                sample of constituent frame 1 in the units of one
   1962  *                sixteenth of the luma samples
   1963  *  @param  frame_packing_arrangement_reserved_byte :
   1964  *                reserved for the future use.
   1965  *  @param  frame_packing_arrangement_repetition_period :
   1966  *                specifies the persistence of the frame packing arrangement
   1967  *                SEI message and may specify a frame order count interval
   1968  *                within which another frame packing arrangement SEI message
   1969  *                with the same value of frame_packing_arrangement_id or the
   1970  *                end of the coded video sequence shall be present in the
   1971  *                bitstream.
   1972  *  @param  frame_packing_arrangement_extension_flag :
   1973  *                0 - indicates that no additional data follows within the
   1974  *                    frame packing arrangement SEI message.
   1975  *                1 - Reserved for the future use.
   1976  ******************************************************************************
   1977 */
   1978 typedef struct OMX_TI_VIDEO_H264VDEC_SeiFramePacking {
   1979     OMX_U32 parsed_flag;
   1980     OMX_U32 frame_packing_arrangement_id;
   1981     OMX_U32 frame_packing_arrangement_repetition_period;
   1982     OMX_U8  frame_packing_arrangement_cancel_flag;
   1983     OMX_U8  frame_packing_arrangement_type;
   1984     OMX_U8  quincunx_sampling_flag;
   1985     OMX_U8  content_interpretation_type;
   1986     OMX_U8  spatial_flipping_flag;
   1987     OMX_U8  frame0_flipped_flag;
   1988     OMX_U8  field_views_flag;
   1989     OMX_U8  current_frame_is_frame0_flag;
   1990     OMX_U8  frame0_self_contained_flag;
   1991     OMX_U8  frame1_self_contained_flag;
   1992     OMX_U8  frame0_grid_position_x;
   1993     OMX_U8  frame0_grid_position_y;
   1994     OMX_U8  frame1_grid_position_x;
   1995     OMX_U8  frame1_grid_position_y;
   1996     OMX_U8  frame_packing_arrangement_reserved_byte;
   1997     OMX_U8  frame_packing_arrangement_extension_flag;
   1998 } OMX_TI_VIDEO_H264VDEC_SeiFramePacking;
   1999 
   2000 
   2001 /**
   2002  ******************************************************************************
   2003  *  @struct OMX_TI_VIDEO_H264VDEC_SeiMessages
   2004  *
   2005  *  @brief   This structure contains all the supported SEI msg objects
   2006  *
   2007  *  @param  parsed_flag :1 - Indicates that in the current process call,
   2008  *                           contents of the structure is updated
   2009  *                       0 - Indicates contents of the structure is not updated
   2010  *  @param  full_frame_freeze : Full-frame freeze SEI message
   2011  *  @param  full_frame_freeze_release :Cancels the effect of any full-frame
   2012  *             freeze SEI message sent with pictures that precede the current
   2013  *             picture in the output order.
   2014  *  @param  prog_refine_start :Specifies the beginning of a set of consecutive
   2015  *             coded pictures that is labeled as the current picture followed
   2016  *             by a sequence of one or more pictures of refinement of the
   2017  *             quality of the current picture, rather than as a representation
   2018  *             of a continually moving scene.
   2019  *  @param  prog_refine_end : Specifies end of progressive refinement.
   2020  *  @param  user_data_registered :Message contains user data registered as
   2021  *            specified by ITU-T Recommendation T.35
   2022  *  @param  user_data_unregistered :Message contains unregistered user data
   2023  *            identified by a UUID
   2024  *  @param  buffering_period_info :Message specifies the buffering period
   2025  *  @param  pan_scan_rect :Message specifies the coordinates of a rectangle
   2026  *            relative to the cropping rectangle of the sequence parameter set
   2027  *  @param  recovery_pt_info :The recovery point SEI message assists a decoder
   2028  *            in determining when the decoding process will produce acceptable
   2029  *            pictures for display after the decoder initiates random access or
   2030  *            after the encoder indicates a broken link in the sequence.
   2031  *  @param  pic_timing :Specifies timing information regarding cpb delays, dpb
   2032 *              output delay, and so on.
   2033  *  @param  stereo_video_info :stereo video information SEI message consist of
   2034  *      pair of picture forming stereo view content.
   2035  ******************************************************************************
   2036 */
   2037 typedef struct OMX_TI_VIDEO_H264VDEC_SeiMessages {
   2038     OMX_U32                                     parsed_flag;
   2039     OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep full_frame_freeze;
   2040     OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel full_frame_freeze_release;
   2041     OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart    prog_refine_start;
   2042     OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd      prog_refine_end;
   2043     OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT    user_data_registered;
   2044     OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg      user_data_unregistered;
   2045     OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod    buffering_period_info;
   2046     OMX_TI_VIDEO_H264VDEC_SeiPanScanRect        pan_scan_rect;
   2047     OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo  recovery_pt_info;
   2048     OMX_TI_VIDEO_H264VDEC_SeiPictureTiming      pic_timing;
   2049     OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo    stereo_video_info;
   2050     OMX_TI_VIDEO_H264VDEC_SeiFramePacking       frame_packing;
   2051 } OMX_TI_VIDEO_H264VDEC_SeiMessages;
   2052 
   2053 
   2054 /**
   2055  ******************************************************************************
   2056  *  @struct _sErrConcealStr
   2057  *  @brief  This str holds up the required Info for implementing the SCV EC,
   2058  *          this will get updated by H.264 decoder while decoding the  SVC
   2059  *          Base/Target Layers
   2060  *
   2061  *  @param  CurrMbInfoBufPointer  :Base Address of the current decoded frame
   2062  *                                   MB Info buffer
   2063  *
   2064  *  @param  CurrMbStatusBufPointer: Base Address of the current decoded frame
   2065  *                                   MB staus buffer pointer
   2066  *
   2067  *  @param  currFrameY            : Base Address of the current decoded Luma
   2068  *                                  frame buffer pointer (physical pointer)
   2069  *
   2070  *  @param  currFrameUV           : Base Address of the current decoded Chroma
   2071  *                                  frame buffer pointer (physical pointer)
   2072  *
   2073  *  @param  refConclY             : Base Address of the ref decoded Luma
   2074  *                                  frame buffer pointer (virtual pointer)
   2075  *
   2076  *  @param  refConclUV            : Base Address of the ref decoded Chroma
   2077  *                                  frame buffer pointer (virtual pointer)
   2078  *
   2079  *  @param  TilerBaseAddress      : TBA vaule for the VDMA
   2080  *
   2081  *  @param  pSliceInfoFlags       : Flag to enable slice info
   2082  *
   2083  *  @param  ref_width             : Resultant Horizontal LUMA picture size
   2084  *                                  after Pad size addition on both Left
   2085  *                                  & Right sides. This gets used as
   2086  *                                  stride during vDMA programming.
   2087  *                                  In case of TILER,the stride is fixed,
   2088  *                                  independant of Picture width, and
   2089  *                                  only changes with TILER mode.
   2090  *
   2091  *  @param  ref_width_c           : Resultant Horizontal CHROMA picture size
   2092  *                                  after Pad size addition on both Left &
   2093  *                                  Right sides.
   2094  *
   2095  *
   2096  *  @param  ref_frame_height      : In case of Interlaced streams,the picure
   2097  *                                  store is different i.e., store each field
   2098  *                                  by applying PAD on top & bottom lines.
   2099  *                                  Hence the picture height will be Height
   2100  *                                  plus four times the Pad size. This
   2101  *                                  variable holds this resultant value.
   2102  *
   2103  *  @param  mb_width              : Picture width in terms of Macroblocks
   2104  *
   2105  *  @param  mb_height             : Picture height in terms of Macroblocks.
   2106  *
   2107  *  @param  image_width           : Image width of the decoded frame
   2108  *
   2109  *  @param  image_width           : Image height of the decoded frame
   2110  *
   2111  *  @param  frameType             : Frame type of the current frame.
   2112  *
   2113  *  @param  picaff_frame          : Flag to indicate whether current picture
   2114  *                                  is of Frame type & referring to Field
   2115  *                                  picture as reference.
   2116  *
   2117  *  @param  mb_aff_frame_flag     : Flag to indicate whether the current
   2118  *                                  decoding picture is MBAFF type.
   2119  *
   2120  *  @param  field_pic_flag        : Flag to indicate whether the current
   2121  *                                  decoding picture is field type.
   2122  *
   2123  *  @param  bottom_field_flag     : This parameter equal to 1 specifies that
   2124  *                                  the slice is part of a coded bottom field.
   2125  *                                  bottom_field_flag equalto 0 specifies
   2126  *                                  that the picture is a coded top field.
   2127  *
   2128  *  @param  nonPairedFieldPic     : Flag to indicate Non paired field picture.
   2129  *
   2130  *  @param  prev_pic_bottom_field : this variable Indicates if the previous
   2131  *                                  picture was a bottom field or not (a Flag)
   2132  ******************************************************************************
   2133 */
   2134 
   2135 typedef struct OMX_TI_VIDEO_H264VDEC_ErrConcealStr {
   2136     OMX_S32 ErrConcealmentEnable;
   2137     OMX_S32 CurrMbInfoBufPointer;
   2138     OMX_S32 CurrMbStatusBufPointer;
   2139     OMX_S32 CurrMbInfoIresBufPointer;
   2140     OMX_S32 currFrameY;
   2141     OMX_S32 currFrameUV;
   2142     OMX_S32 refConclY;
   2143     OMX_S32 refConclUV;
   2144     OMX_U32 TilerBaseAddress;
   2145     OMX_U16 ref_width;
   2146     OMX_U16 ref_width_c;
   2147     OMX_U16 ref_frame_height;
   2148     OMX_U16 mb_width;
   2149     OMX_U16 mb_height;
   2150     OMX_U16 image_width;
   2151     OMX_U16 image_height;
   2152     OMX_U8  frameType;
   2153     OMX_U8  picaff_frame;
   2154     OMX_U8  mb_aff_frame_flag;
   2155     OMX_U8  field_pic_flag;
   2156     OMX_U8  bottom_field_flag;
   2157     OMX_U8  nonPairedFieldPic;
   2158     OMX_U8  prev_pic_bottom_field;
   2159 }OMX_TI_VIDEO_H264VDEC_ErrConcealStr;
   2160 
   2161 /**
   2162  *  Size of sliceinfo flags - We have two slice info flag arrays in SL2, one
   2163  *  for ECD3 and the other for MC3. ECD3 flag is one bit per MB. Since Maximum
   2164  *  supported number of MBs in a frame is 128 x 128 = 16384, we need 16384/8 =
   2165  *  2048 bytes for the slice info flag array for ECD3. But for the MC3 array,
   2166  *  we always make the next bit also as 1 to enable loading into ping and pong
   2167  *  memories of MCBUF. So we need an extra bit for the MC3 array, to avoid
   2168  *  buffer overflow when the last MB is a new slice. To keep the next SL2 buffer
   2169  *  in 16-byte aligned position (some buffers need it) we round the size to next
   2170  *  multiple of 16, i.e., 2064.
   2171 */
   2172 #define OMX_TI_VIDEO_SLICEINFO_FLAGSIZE  2064
   2173 
   2174 /**
   2175  ******************************************************************************
   2176  *  @struct _sErrConcealLayerStr
   2177  *  @brief  This str holds up the required Info for implementing the SCV EC,
   2178  *          this will get updated by H.264 decoder while decoding the  SVC
   2179  *          Base/Target Layers
   2180  *
   2181  *  @param  svcEcStr              : structure instance of sSVCErrConcealStr
   2182  *
   2183  *  @param  pSliceInfoFlags       : Array to store the sliceInfo flag
   2184  *
   2185  *
   2186  ******************************************************************************
   2187 */
   2188 typedef struct OMX_TI_VIDEO_H264VDEC_ErrConcealLayerStr {
   2189     OMX_TI_VIDEO_H264VDEC_ErrConcealStr sECStr;
   2190     OMX_U8                              pSliceInfoFlags[OMX_TI_VIDEO_SLICEINFO_FLAGSIZE];
   2191 }OMX_TI_VIDEO_H264VDEC_ErrConcealLayerStr;
   2192 
   2193 
   2194 /**
   2195  ******************************************************************************
   2196  *  @struct OMX_TI_VIDEO_H264VDEC_CommonInfo
   2197  *
   2198  *  @brief
   2199  *
   2200  ******************************************************************************
   2201 */
   2202 typedef struct OMX_TI_VIDEO_H264VDEC_CommonInfo {
   2203     OMX_U32 codec_type : 8;
   2204     OMX_U32 fmt_type : 8;
   2205     OMX_U32 mb_ll_avail : 1;
   2206     OMX_U32 mb_ul_avail : 1;
   2207     OMX_U32 mb_uu_avail : 1;
   2208     OMX_U32 mb_ur_avail : 1;
   2209     OMX_U32 pic_bound_l : 1;
   2210     OMX_U32 pic_bound_u : 1;
   2211     OMX_U32 pic_bound_r : 1;
   2212     OMX_U32 pic_bound_b : 1;
   2213     OMX_U32 first_mb_flag : 1;
   2214     OMX_U32 error_flag : 1;
   2215     OMX_U32 zero : 6;
   2216     OMX_U32 zeroes : 16;
   2217     OMX_U32 mb_addr : 16;
   2218 
   2219 } OMX_TI_VIDEO_H264VDEC_CommonInfo;
   2220 
   2221 /**
   2222  ******************************************************************************
   2223  *  @struct OMX_TI_VIDEO_H264VDEC_MotionVector
   2224  *
   2225  *  @brief
   2226  *
   2227  ******************************************************************************
   2228 */
   2229 typedef struct OMX_TI_VIDEO_H264VDEC_MotionVector {
   2230     OMX_S16 x;
   2231     OMX_S16 y;
   2232 } OMX_TI_VIDEO_H264VDEC_MotionVector;
   2233 
   2234 /**
   2235  ******************************************************************************
   2236  *  @struct OMX_TI_VIDEO_H264VDEC_CabacContext
   2237  *
   2238  *  @brief
   2239  *
   2240  ******************************************************************************
   2241 */
   2242 typedef struct OMX_TI_VIDEO_H264VDEC_CabacContext {
   2243     OMX_TI_VIDEO_H264VDEC_MotionVector mvd_l0[4];
   2244     OMX_TI_VIDEO_H264VDEC_MotionVector mvd_l1[4];
   2245 
   2246 } OMX_TI_VIDEO_H264VDEC_CabacContext;
   2247 
   2248 /**
   2249  ******************************************************************************
   2250  *  @struct OMX_TI_VIDEO_H264VDEC_TotalCoefLuma
   2251  *
   2252  *  @brief
   2253  *
   2254  ******************************************************************************
   2255 */
   2256 typedef struct OMX_TI_VIDEO_H264VDEC_TotalCoefLuma {
   2257     OMX_U8 right[3];
   2258     OMX_U8 bottom_right;
   2259     OMX_U8 bottom[3];
   2260     OMX_U8 zero;
   2261 } OMX_TI_VIDEO_H264VDEC_TotalCoefLuma;
   2262 
   2263 /**
   2264  ******************************************************************************
   2265  *  @struct OMX_TI_VIDEO_H264VDEC_TotalCoefChroma
   2266  *
   2267  *  @brief
   2268  *
   2269  ******************************************************************************
   2270 */
   2271 typedef struct OMX_TI_VIDEO_H264VDEC_TotalCoefChroma {
   2272     OMX_U8 right_cb;
   2273     OMX_U8 bottom_right_cb;
   2274     OMX_U8 bottom_cb;
   2275     OMX_U8 zero;
   2276     OMX_U8 right_cr;
   2277     OMX_U8 bottom_right_cr;
   2278     OMX_U8 bottom_cr;
   2279     OMX_U8 zero1;
   2280 } OMX_TI_VIDEO_H264VDEC_TotalCoefChroma;
   2281 
   2282 /**
   2283  ******************************************************************************
   2284  *  @struct OMX_TI_VIDEO_H264VDEC_CavlcContext
   2285  *
   2286  *  @brief
   2287  *
   2288  ******************************************************************************
   2289 */
   2290 typedef struct OMX_TI_VIDEO_H264VDEC_CavlcContext {
   2291     unsigned long long                    zeroes[2];
   2292     OMX_TI_VIDEO_H264VDEC_TotalCoefLuma   total_coef_luma;
   2293     OMX_TI_VIDEO_H264VDEC_TotalCoefChroma total_coef_chroma;
   2294 
   2295 } OMX_TI_VIDEO_H264VDEC_CavlcContext;
   2296 
   2297 /**
   2298  ******************************************************************************
   2299  *  @struct OMX_TI_VIDEO_H264VDEC_IntraPredMode
   2300  *
   2301  *  @brief
   2302  *
   2303  ******************************************************************************
   2304 */
   2305 typedef struct OMX_TI_VIDEO_H264VDEC_IntraPredMode {
   2306     OMX_U32 ipred_mode0 : 4;
   2307     OMX_U32 ipred_mode1 : 4;
   2308     OMX_U32 ipred_mode2 : 4;
   2309     OMX_U32 ipred_mode3 : 4;
   2310     OMX_U32 ipred_mode4 : 4;
   2311     OMX_U32 ipred_mode5 : 4;
   2312     OMX_U32 ipred_mode6 : 4;
   2313     OMX_U32 ipred_mode7 : 4;
   2314     OMX_U32 ipred_mode8 : 4;
   2315     OMX_U32 ipred_mode9 : 4;
   2316     OMX_U32 ipred_mode10 : 4;
   2317     OMX_U32 ipred_mode11 : 4;
   2318     OMX_U32 ipred_mode12 : 4;
   2319     OMX_U32 ipred_mode13 : 4;
   2320     OMX_U32 ipred_mode14 : 4;
   2321     OMX_U32 ipred_mode15 : 4;
   2322 
   2323 } OMX_TI_VIDEO_H264VDEC_IntraPredMode;
   2324 
   2325 
   2326 /**
   2327  ******************************************************************************
   2328  *  @struct OMX_TI_VIDEO_H264VDEC_MbPredType
   2329  *
   2330  *  @brief
   2331  *
   2332  ******************************************************************************
   2333 */
   2334 typedef struct OMX_TI_VIDEO_H264VDEC_MbPredType {
   2335     OMX_U32 mbskip : 1;
   2336     OMX_U32 tr8x8 : 1;
   2337     OMX_U32 mb_field : 1;
   2338     OMX_U32 cond_mbskip : 1;
   2339     OMX_U32 c_ipred_mode : 2;
   2340     OMX_U32 zero : 1;
   2341     OMX_U32 end_of_slice : 1;
   2342     OMX_U32 mb_y_mod2 : 1;
   2343     OMX_U32 zero1 : 7;
   2344     OMX_U32 refidx_equal_flag_l0 : 1;
   2345     OMX_U32 refidx_equal_flag_l1 : 1;
   2346     OMX_U32 mv_equal_flag_l0 : 1;
   2347     OMX_U32 mv_equal_flag_l1 : 1;
   2348     OMX_U32 zeroes : 4;
   2349     OMX_U32 mb_type : 8;
   2350     OMX_U8  sub_mb_type[4];
   2351 
   2352 } OMX_TI_VIDEO_H264VDEC_MbPredType;
   2353 
   2354 /**
   2355  ******************************************************************************
   2356  *  @struct OMX_TI_VIDEO_H264VDEC_QpCbp
   2357  *
   2358  *  @brief
   2359  *
   2360  ******************************************************************************
   2361 */
   2362 typedef struct OMX_TI_VIDEO_H264VDEC_QpCbp {
   2363     OMX_U32 cbp;
   2364     OMX_U8  qp_y;
   2365     OMX_U8  qp_cb;
   2366     OMX_U8  qp_cr;
   2367     OMX_U8  zero;
   2368 } OMX_TI_VIDEO_H264VDEC_QpCbp;
   2369 
   2370 /**
   2371  ******************************************************************************
   2372  *  @struct OMX_TI_VIDEO_H264VDEC_RefPicControl
   2373  *
   2374  *  @brief
   2375  *
   2376  ******************************************************************************
   2377 */
   2378 typedef struct OMX_TI_VIDEO_H264VDEC_RefPicControl {
   2379     OMX_U8 refidx[4];
   2380     OMX_U8 refpicid[4];
   2381 
   2382 } OMX_TI_VIDEO_H264VDEC_RefPicControl;
   2383 
   2384 /**
   2385  ******************************************************************************
   2386  *  @struct OMX_TI_VIDEO_H264VDEC_MvBidirectional16
   2387  *
   2388  *  @brief
   2389  *
   2390  ******************************************************************************
   2391 */
   2392 typedef struct OMX_TI_VIDEO_H264VDEC_MvBidirectional16 {
   2393     OMX_TI_VIDEO_H264VDEC_MotionVector mv_forward[16];
   2394     OMX_TI_VIDEO_H264VDEC_MotionVector mv_backward[16];
   2395 } OMX_TI_VIDEO_H264VDEC_MvBidirectional16;
   2396 
   2397 
   2398 /**
   2399  ******************************************************************************
   2400  *  @struct OMX_TI_VIDEO_H264VDEC_MvBidirectional4
   2401  *
   2402  *  @brief
   2403  *
   2404  ******************************************************************************
   2405 */
   2406 typedef struct OMX_TI_VIDEO_H264VDEC_MvBidirectional4 {
   2407     OMX_TI_VIDEO_H264VDEC_MotionVector mv_forward[4];
   2408     OMX_TI_VIDEO_H264VDEC_MotionVector mv_backward[4];
   2409 
   2410 } OMX_TI_VIDEO_H264VDEC_MvBidirectional4;
   2411 
   2412 /**
   2413  ******************************************************************************
   2414  *  @struct OMX_TI_VIDEO_H264VDEC_MbInfo
   2415  *
   2416  *  @brief  This structure details the data format for MB information shared to
   2417  *          application. This helps application to understand all fields
   2418  *          the way codec uses MB info internally. This structure is of size
   2419  *          208 Bytes.
   2420  *
   2421  *  @param  info : This elements gives details about the MB placement in the
   2422  *                 frame.
   2423  *
   2424  *  @param  cabac: This field holds the context data for a CABAC coded MB
   2425  *
   2426  *  @param  cavlc: This field holds the context data for a CAVLC coded MB
   2427  *
   2428  *  @param  ipred_mode: This field holds information of intra prediction modes
   2429  *                      at 4x4 level, for intra coded MB.
   2430  *
   2431  *  @param  mb_pred_type: This indicates prediction specific details for inter
   2432  *                        coded MB
   2433  *
   2434  *  @param  qp_cbp: This gives coded & QP informations for both LUMA & CHROMA
   2435  *                   components of a Macro Block.
   2436  *
   2437  *  @param  l0_ref_pic_control: Informs all details about reference indices
   2438  *                              at 8x8 block level in L0 direction
   2439  *
   2440  *  @param  l1_ref_pic_control: Informs all details about reference indices
   2441  *                              at 8x8 block level in L1 direction
   2442  *
   2443  *  @param  mv_forward: Lists all Motion vectors at 4x4 level in L0 direction
   2444  *
   2445  *  @param  bidirectional16: Lists all Motion vectors at 4x4 level in both
   2446  *                           directions
   2447  *
   2448  *  @param  bidirectional4: Lists all Motion vectors at 8x8 level in both
   2449  *                          directions
   2450  *
   2451  ******************************************************************************
   2452 */
   2453 typedef struct OMX_TI_VIDEO_H264VDEC_MbInfo {
   2454     OMX_TI_VIDEO_H264VDEC_CommonInfo info;
   2455 
   2456     union {
   2457         OMX_TI_VIDEO_H264VDEC_CabacContext cabac;
   2458         OMX_TI_VIDEO_H264VDEC_CavlcContext cavlc;
   2459     } OMX_TI_VIDEO_H264VDEC_context;
   2460 
   2461     OMX_TI_VIDEO_H264VDEC_IntraPredMode ipred_mode;
   2462     OMX_TI_VIDEO_H264VDEC_MbPredType    mb_pred_type;
   2463     OMX_TI_VIDEO_H264VDEC_QpCbp         qp_cbp;
   2464     OMX_TI_VIDEO_H264VDEC_RefPicControl l0_ref_pic_control;
   2465     OMX_TI_VIDEO_H264VDEC_RefPicControl l1_ref_pic_control;
   2466 
   2467     union {
   2468         OMX_TI_VIDEO_H264VDEC_MotionVector      mv_forward[16];
   2469         OMX_TI_VIDEO_H264VDEC_MvBidirectional16 bidirectional16;
   2470         OMX_TI_VIDEO_H264VDEC_MvBidirectional4  bidirectional4;
   2471     } OMX_TI_VIDEO_H264VDEC_motion_vecs;
   2472 
   2473 } OMX_TI_VIDEO_H264VDEC_MbInfo;
   2474 
   2475 
   2476 
   2477 /**
   2478 ********************************************************************************
   2479 *  @struct  OMX_TI_VIDEO_VC1VDEC_MbInfo
   2480 *
   2481 *  @brief   MB information structure that is written out by the IVA-HD hardware.
   2482 *
   2483 *  @note    None:
   2484 *
   2485 ********************************************************************************
   2486 */
   2487 typedef struct OMX_TI_VIDEO_VC1VDEC_MbInfo {
   2488     /* MB address                                                               */
   2489     OMX_U8 mb_addr;
   2490     /* Error flag                                                               */
   2491     OMX_U8 error_flag;
   2492     /* First MB flag                                                            */
   2493     OMX_U8 first_mb_flag;
   2494     /* Picture bound                                                            */
   2495     OMX_U8 pic_bound_b;
   2496     /* Upper picture bound                                                      */
   2497     OMX_U8 pic_bound_u;
   2498     /* Right picture bound                                                      */
   2499     OMX_U8 pic_bound_r;
   2500     /* Left picture bound                                                       */
   2501     OMX_U8 pic_bound_l;
   2502     /* Availability of upper right MB                                           */
   2503     OMX_U8 mb_ur_avail;
   2504     /* Availability of upper MB                                                 */
   2505     OMX_U8 mb_uu_avail;
   2506     /* Availability of upper left MB                                            */
   2507     OMX_U8 mb_ul_avail;
   2508     /* Availability of left MB                                                  */
   2509     OMX_U8 mb_ll_avail;
   2510     /* Macroblock header format type                                            */
   2511     OMX_U8 fmt_type;
   2512     /* Codec type                                                               */
   2513     OMX_U8 codec_type;
   2514     /* Indicates DC values of each Y block in current MB                        */
   2515     OMX_U8 dc_coef_q_y[4];
   2516     /* Indicates DC values of Cr block in current MB                            */
   2517     OMX_U8 dc_coef_q_cr;
   2518     /* Indicates DC values of Cb block in current MB                            */
   2519     OMX_U8 dc_coef_q_cb;
   2520     /* Block type of cr block                                                   */
   2521     OMX_U8 block_type_cr;
   2522     /* Block type of cb block                                                   */
   2523     OMX_U8 block_type_cb;
   2524     /* Block types of luma                                                      */
   2525     OMX_U8 block_type_y[4];
   2526     /* In decoding, if the current macroblock is the last macroblock in a slice,*/
   2527     /* ECD sets 1 to this field during executing the macroblock. Otherwise, ECD */
   2528     /* sets 0 to this field                                                     */
   2529     OMX_U8 end_of_slice;
   2530     /* 1 : allow skipping current MB if CBP = 0                                 */
   2531     OMX_U8 cond_skip_flag;
   2532     /*  Skipped / non skipped MB                                                */
   2533     OMX_U8 skip;
   2534     /* 1 indicates that overlap filtering is in use for the macroblock.         */
   2535     OMX_U8 overlap;
   2536     /* 1 indicates that AC prediction is in use for the macroblock              */
   2537     OMX_U8 acpred;
   2538     /* Denotes inter-prediction direction for the macroblock in B-picture       */
   2539     OMX_U8 b_picture_direction;
   2540     /* Denotes the number of motion vectors.                                    */
   2541     OMX_U8 mv_mode;
   2542     /* 1 indicates that the field transform is in use for the macroblock.       */
   2543     OMX_U8 fieldtx;
   2544     /* 1 indicates that field inter-prediction is in use                        */
   2545     OMX_U8 mv_type;
   2546     /* Equals the reference frame distance                                      */
   2547     OMX_U8 refdist;
   2548     /* 1 indicates that macroblock quantizer-scale (MQUANT) overflows           */
   2549     OMX_U8 mquant_overflow;
   2550     /* Equals the quantizer-scale for the macroblock                            */
   2551     OMX_U8 quant;
   2552     /* 1 indicates that 0.5 shall be added to PQUANT in calculation of          */
   2553     /* quantizer-scale. This field is valid for decoding only.                  */
   2554     OMX_U8 halfqp;
   2555     /* Equals the DC coefficient step size which is derived from MQUANT in the  */
   2556     /*   bit-stream                                                             */
   2557     OMX_U8 dc_step_size;
   2558     /* Denotes the coded sub-block pattern for cr block                         */
   2559     OMX_U8 cbp_cr;
   2560     /* Denotes the coded sub-block pattern for cb block                         */
   2561     OMX_U8 cbp_cb;
   2562     /* Denotes the coded sub-block pattern for luma blocks                      */
   2563     OMX_U8 cbp_y[3];
   2564     /* Denotes the backward reference field picture                             */
   2565     OMX_U8 mv_bw_ref_y[4];
   2566     /* Denotes the forward reference field picture                              */
   2567     OMX_U8 mv_fw_ref_y[3];
   2568     /* Unclipped forward motion vector for luma                                 */
   2569     OMX_U8 mv_fw_y[4][4];
   2570     /* Unclipped backward motion vector for luma                                */
   2571     OMX_U8 mv_bw_y[1][1];
   2572     /* Unclipped backward motion vector for chroma                              */
   2573     OMX_U8 mv_bw_c[2];
   2574     /* Unclipped forward motion vector for chroma                               */
   2575     OMX_U8 mv_fw_c[2];
   2576     /* Clipped forward motion vector for luma                                   */
   2577     OMX_U8 cmv_fw_y[4][4];
   2578     /* Clipped backward motion vector for luma                                  */
   2579     OMX_U8 cmv_bw_y[4][4];
   2580     /* Clipped forward motion vector for chroma                                 */
   2581     OMX_U8 cmv_fw_c[4][4];
   2582     /* Clipped backward motion vector for chroma                                */
   2583     OMX_U8 cmv_bw_c[4][4];
   2584 
   2585 }OMX_TI_VIDEO_VC1VDEC_MbInfo;
   2586 
   2587 #endif /* OMX_TI_VIDEO_H */
   2588 
   2589