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  * =========================================================================*/
     51 
     52 
     53 #ifndef OMX_TI_VIDEO_H
     54 #define OMX_TI_VIDEO_H
     55 #define H264ENC_MAXNUMSLCGPS 2
     56 
     57 #include <OMX_Core.h>
     58 
     59 /**
     60  *	@brief	mode selection for the data that is given to the Codec
     61  */
     62 
     63 typedef enum OMX_VIDEO_DATASYNCMODETYPE {
     64     OMX_Video_FixedLength,	//!<  Interms of multiples of 4K
     65     OMX_Video_SliceMode,		//!<  Slice mode
     66     OMX_Video_NumMBRows,	//!< Number of rows, each row is 16 lines of video
     67     OMX_Video_EntireFrame  	//!< Processing of entire frame data
     68 } OMX_VIDEO_DATASYNCMODETYPE;
     69 
     70 
     71 /* ========================================================================== */
     72 /*!
     73  @brief OMX_TI_VIDEO_PARAM_DATAMODE  :to configure how the input and output data is fed to the Codec
     74  @param  nPortIndex  to specify the index of the port
     75  @param  eDataMode 	to specify the data mode
     76  						@sa  OMX_VIDEO_DATASYNCMODETYPE
     77  @param  nNumDataUnits	 to specify the number of data units (where units are of type defined by eDataMode)
     78  */
     79 /* ==========================================================================*/
     80 typedef struct OMX_VIDEO_PARAM_DATASYNCMODETYPE{
     81 	OMX_U32 nSize;
     82 	OMX_VERSIONTYPE nVersion;
     83 	OMX_U32 nPortIndex;
     84 	OMX_VIDEO_DATASYNCMODETYPE eDataMode;
     85 	OMX_U32 nNumDataUnits;
     86 } OMX_VIDEO_PARAM_DATASYNCMODETYPE;
     87 
     88 /**
     89  *	@brief	Aspect Ratio type selection for the encoded bit stream
     90  */
     91 typedef enum OMX_VIDEO_ASPECTRATIOTYPE{
     92 	OMX_Video_AR_Unspecified,  //!< Unspecified aspect ratio
     93 	OMX_Video_AR_Square ,  //!< 1:1 (square) aspect ratio
     94 	OMX_Video_AR_12_11  ,  //!<  12:11  aspect ratio
     95 	OMX_Video_AR_10_11  ,  //!<  10:11  aspect ratio
     96 	OMX_Video_AR_16_11  ,  //!<  16:11  aspect ratio
     97 	OMX_Video_AR_40_33  ,  //!<  40:33  aspect ratio
     98 	OMX_Video_AR_24_11  ,  //!<  24:11  aspect ratio
     99 	OMX_Video_AR_20_11  ,  //!<  20:11  aspect ratio
    100 	OMX_Video_AR_32_11  ,  //!<  32:11  aspect ratio
    101 	OMX_Video_AR_80_33  ,  //!<  80:33  aspect ratio
    102 	OMX_Video_AR_18_11  ,  //!<  18:11  aspect ratio
    103 	OMX_Video_AR_15_15  ,  //!<  15:15  aspect ratio
    104 	OMX_Video_AR_64_33  ,  //!<  64:33  aspect ratio
    105 	OMX_Video_AR_160_99 ,  //!<  160:99 aspect ratio
    106 	OMX_Video_AR_4_3    ,  //!<  4:3    aspect ratio
    107 	OMX_Video_AR_3_2    ,  //!<  3:2    aspect ratio
    108 	OMX_Video_AR_2_1    ,  //!<  2:1    aspect ratio
    109 	OMX_Video_AR_Extended = 255,       //!<  Extended aspect ratio
    110    	OMX_Video_AR_Extended_MAX =  0X7FFFFFFF
    111 }OMX_VIDEO_ASPECTRATIOTYPE;
    112 
    113 
    114 /* ========================================================================== */
    115 /*!
    116  @brief OMX_TI_VIDEO_PARAM_VUI_SELECT  :to select the VUI Settings
    117  @param  bAspectRatioPresent flag to indicate the insertion of aspect ratio information in VUI part of bit-stream
    118  @param  ePixelAspectRatio to specify the Aspect Ratio
    119  @param  bFullRange to indicate whether pixel value range is specified as full range or not (0 to 255)
    120 */
    121 /* ==========================================================================*/
    122 typedef struct OMX_VIDEO_PARAM_VUIINFOTYPE {
    123 	OMX_U32	 nSize;
    124 	OMX_VERSIONTYPE nVersion;
    125 	OMX_U32	 nPortIndex;
    126 	OMX_BOOL bAspectRatioPresent;
    127 	OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
    128 	OMX_BOOL bFullRange;
    129 }OMX_VIDEO_PARAM_VUIINFOTYPE;
    130 
    131 /* ========================================================================== */
    132 /*!
    133  @brief OMX_VIDEO_CONFIG_PIXELINFOTYPE  :to specify the information related to the input pixel data (aspect ratio & range) to the Codec
    134  										so that codec can incorporate this info in the coded bit stream
    135  @param  nWidth 	 to specify the Aspect ratio: width of the pixel
    136  @param  nHeight 	 to specify the Aspect ratio: height of the pixel
    137  */
    138 /* ==========================================================================*/
    139 typedef struct OMX_VIDEO_CONFIG_PIXELINFOTYPE  {
    140 	OMX_U32 nSize;
    141 	OMX_VERSIONTYPE nVersion;
    142 	OMX_U32 nPortIndex;
    143 	OMX_U32 nWidth;
    144 	OMX_U32 nHeight;
    145 } OMX_VIDEO_CONFIG_PIXELINFOTYPE;
    146 
    147 /* ========================================================================== */
    148 /*!
    149  @brief OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE : to configure what NALU  need to send along the frames of different types (Intra,IDR...etc)
    150  @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
    151  @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
    152  @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
    153  @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
    154  @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
    155 
    156 Bit Position:   13|       12|      11|           10|      9|    8|    7|   6|      5|         4|              3|              2|              1|          0
    157 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
    158 */
    159 /* ==========================================================================*/
    160 typedef struct OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE {
    161 	OMX_U32	 nSize;
    162 	OMX_VERSIONTYPE nVersion;
    163 	OMX_U32	 	nPortIndex;
    164 	OMX_U32 	nStartofSequence;
    165 	OMX_U32 	nEndofSequence;
    166 	OMX_U32 	nIDR;
    167 	OMX_U32 	nIntraPicture;
    168 	OMX_U32 	nNonIntraPicture;
    169 }OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE;
    170 
    171 
    172 /* ========================================================================== */
    173 /*!
    174  @brief OMX_VIDEO_CONFIG_MESEARCHRANGETYPE : to configure Motion Estimation Parameters
    175  @param  eMVAccuracy 		to specify the Motion Vector Accuracy
    176  							@sa OMX_VIDEO_MOTIONVECTORTYPE
    177  @param  sHorSearchRangeP	 	to Specify the Horizontal Search range for P Frame
    178  @param  sVerSearchRangeP		to Specify the Vertical Search range for P Frame
    179  @param  sHorSearchRangeB	  	to Specify the Horizontal Search range for B Frame
    180  @param  sVerSearchRangeB	  	to Specify the Vertical Search range for B Frame
    181 */
    182 /* ==========================================================================*/
    183 typedef struct OMX_VIDEO_CONFIG_MESEARCHRANGETYPE{
    184 	OMX_U32	 nSize;
    185 	OMX_VERSIONTYPE nVersion;
    186 	OMX_U32	 nPortIndex;
    187 	OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
    188 	OMX_U32	 nHorSearchRangeP;
    189 	OMX_U32	 nVerSearchRangeP;
    190 	OMX_U32	 nHorSearchRangeB;
    191 	OMX_U32	 nVerSearchRangeB;
    192 }OMX_VIDEO_CONFIG_MESEARCHRANGETYPE;
    193 
    194 /**
    195  *	@brief	Block size specification
    196  */
    197 typedef enum OMX_VIDEO_BLOCKSIZETYPE {
    198 	OMX_Video_Block_Size_16x16=0,
    199 	OMX_Video_Block_Size_8x8,
    200 	OMX_Video_Block_Size_8x4,
    201 	OMX_Video_Block_Size_4x8,
    202 	OMX_Video_Block_Size_4x4,
    203    	OMX_Video_Block_Size_MAX =  0X7FFFFFFF
    204 }OMX_VIDEO_BLOCKSIZETYPE;
    205 
    206 /* ========================================================================== */
    207 /*!
    208  @brief OMX_VIDEO_PARAM_MEBLOCKSIZETYPE : to configure the Min Motion Estimation block size for P and B frames
    209  @param  eMinBlockSizeP 		to specify the Min Block size used for Motion Estimation incase of P Frames
    210  							@sa OMX_VIDEO_BLOCKSIZETYPE
    211  @param  eMinBlockSizeB	 	to specify the Min Block size used for Motion Estimation incase of B Frames
    212 */
    213 /* ==========================================================================*/
    214 typedef struct OMX_VIDEO_PARAM_MEBLOCKSIZETYPE{
    215 	OMX_U32	 nSize;
    216 	OMX_VERSIONTYPE nVersion;
    217 	OMX_U32	 nPortIndex;
    218 	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
    219 	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
    220 }OMX_VIDEO_PARAM_MEBLOCKSIZETYPE;
    221 
    222 /**
    223  *	@brief	to select the chroma component used for Intra Prediction
    224  */
    225 typedef enum OMX_VIDEO_CHROMACOMPONENTTYPE {
    226 	OMX_Video_Chroma_Component_Cr_Only=0,	//!< consider only Cr chroma component for Intra prediction
    227 	OMX_Video_Chroma_Component_Cb_Cr_Both,  //!< consider both (Cb & Cr) chroma components for Intra prediction
    228      OMX_Video_Chroma_Component_MAX =  0X7FFFFFFF
    229 }OMX_VIDEO_CHROMACOMPONENTTYPE;
    230 
    231 /* ========================================================================== */
    232 /*!
    233  @brief OMX_VIDEO_PARAM_INTRAPREDTYPE : to configure the Modes for the different block sizes during Intra Prediction
    234  @param  nLumaIntra4x4Enable 	 	to configure the Modes for 4x4 block size during luma intra prediction: bit position specifies the modes that are enabled/disabled
    235 								 HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
    236  @param  nLumaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    237  								HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
    238  @param  nLumaIntra16x16Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    239 								 PLANE|DC|HOR|VER
    240  @param  nChromaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
    241 								 PLANE|DC|HOR|VER
    242  @param  eChromaComponentEnable	to select the chroma components used for the intra prediction
    243  								@sa OMX_VIDEO_CHROMACOMPONENTTYPE
    244 */
    245 /* ==========================================================================*/
    246 typedef struct OMX_VIDEO_PARAM_INTRAPREDTYPE{
    247 	OMX_U32	 nSize;
    248 	OMX_VERSIONTYPE nVersion;
    249 	OMX_U32	 nPortIndex;
    250 	OMX_U32	 nLumaIntra4x4Enable;
    251 	OMX_U32 nLumaIntra8x8Enable;
    252 	OMX_U32 nLumaIntra16x16Enable;
    253 	OMX_U32 nChromaIntra8x8Enable;
    254 	OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
    255 }OMX_VIDEO_PARAM_INTRAPREDTYPE;
    256 
    257 
    258 /**
    259  *	@brief	Encoding Mode Preset
    260  */
    261 typedef enum OMX_VIDEO_ENCODING_MODE_PRESETTYPE {
    262 	OMX_Video_Enc_Default=0, 	//!<  for all the params default values are taken
    263 	OMX_Video_Enc_High_Quality, //!<  todo: mention the parameters that takes specific values depending on this selection
    264 	OMX_Video_Enc_User_Defined,
    265 	OMX_Video_Enc_High_Speed_Med_Quality,
    266 	OMX_Video_Enc_Med_Speed_Med_Quality,
    267 	OMX_Video_Enc_Med_Speed_High_Quality,
    268 	OMX_Video_Enc_High_Speed,
    269    	OMX_Video_Enc_Preset_MAX =  0X7FFFFFFF
    270 }OMX_VIDEO_ENCODING_MODE_PRESETTYPE;
    271 
    272 /**
    273  *	@brief	Rate Control Preset
    274  */
    275 typedef enum OMX_VIDEO_RATECONTROL_PRESETTYPE {
    276 	OMX_Video_RC_Low_Delay,	//!<todo:  mention the parameters that takes specific values depending on this selection
    277 	OMX_Video_RC_Storage,
    278 	OMX_Video_RC_Twopass,
    279 	OMX_Video_RC_None,
    280 	OMX_Video_RC_User_Defined,
    281    	OMX_Video_RC_MAX =  0X7FFFFFFF
    282 }OMX_VIDEO_RATECONTROL_PRESETTYPE;
    283 
    284 /* ========================================================================== */
    285 /*!
    286  @brief OMX_VIDEO_PARAM_ENCODER_PRESETTYPE : to select the preset for Encoding Mode & Rate Control
    287  @param  eEncodingModePreset		to specify Encoding Mode Preset
    288  							@sa OMX_VIDEO_ENCODING_MODE_PRESETTYPE
    289  @param  eRateControlPreset	to specify Rate Control Preset
    290  							@sa OMX_VIDEO_RATECONTROL_PRESETTYPE
    291 */
    292 /* ==========================================================================*/
    293 typedef struct OMX_VIDEO_PARAM_ENCODER_PRESETTYPE{
    294 	OMX_U32	 nSize;
    295 	OMX_VERSIONTYPE nVersion;
    296 	OMX_U32	 nPortIndex;
    297 	OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
    298 	OMX_VIDEO_RATECONTROL_PRESETTYPE eRateControlPreset;
    299 }OMX_VIDEO_PARAM_ENCODER_PRESETTYPE;
    300 
    301 
    302 /**
    303  *	@brief	 input content type
    304  */
    305 typedef enum OMX_TI_VIDEO_FRAMECONTENTTYPE {
    306 	OMX_TI_Video_Progressive = 0,			//!<Progressive frame
    307 	OMX_TI_Video_Interlace_BothFieldsTogether = 1,	//!<Interlaced frame
    308 	OMX_TI_Video_Interlace_OneField = 2,
    309 	OMX_TI_Video_AVC_2004_StereoInfoType = 3,
    310 	OMX_TI_Video_AVC_2010_StereoFramePackingType = 4,
    311 	OMX_TI_Video_FrameContentType_MAX = 0x7FFFFFFF
    312 }OMX_TI_VIDEO_FRAMECONTENTTYPE;
    313 
    314 /**
    315  *	@brief	 Specifies the type of interlace content
    316  */
    317 typedef enum OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE {
    318 	OMX_TI_Video_Interlace_PICAFF = 0,	//!< PicAFF type of interlace coding
    319 	OMX_TI_Video_Interlace_MBAFF,		//!< MBAFF type of interlace coding
    320 	OMX_TI_Video_Interlace_Fieldonly,	//!< Field only coding
    321 	OMX_TI_Video_Interlace_Fieldonly_MRF=OMX_TI_Video_Interlace_Fieldonly,
    322 	OMX_TI_Video_Interlace_Fieldonly_ARF,
    323 	OMX_TI_Video_Interlace_Fieldonly_SPF,	//!< Field only coding where codec decides the partiy of the field to be used based upon content
    324 	OMX_Video_Interlace_MAX = 0x7FFFFFFF
    325 }OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE;
    326 
    327 /* ========================================================================== */
    328 /*!
    329  @brief OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE : to configure the data content
    330  @param  eContentType		to specify Content type
    331  							@sa OMX_VIDEO_FRAMECONTENTTYPE
    332 */
    333 /* ==========================================================================*/
    334 typedef struct OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE{
    335 	OMX_U32	 nSize;
    336 	OMX_VERSIONTYPE nVersion;
    337 	OMX_U32	 nPortIndex;
    338 	OMX_TI_VIDEO_FRAMECONTENTTYPE eContentType;
    339 }OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE;
    340 
    341 /* ========================================================================== */
    342 /*!
    343  @brief OMX_TI_VIDEO_PARAM_AVCINTERLACECODING : to configure the interlace encoding related settings
    344  @param  eInterlaceCodingType	to specify the settings of interlace content
    345  							@sa OMX_VIDEO_INTERLACE_CODINGTYPE
    346  @param  bTopFieldFirst				to specify the first field sent is top or bottom
    347  @param  bBottomFieldIntra		to specify codec that encode bottomfield also as intra or not
    348 */
    349 /* ==========================================================================*/
    350 typedef struct OMX_TI_VIDEO_PARAM_AVCINTERLACECODING{
    351 	OMX_U32	 nSize;
    352 	OMX_VERSIONTYPE nVersion;
    353 	OMX_U32	 nPortIndex;
    354 	OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE eInterlaceCodingType;
    355 	OMX_BOOL bTopFieldFirst;
    356 	OMX_BOOL bBottomFieldIntra;
    357 }OMX_TI_VIDEO_PARAM_AVCINTERLACECODING;
    358 /* ========================================================================== */
    359 /*!
    360  @brief OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004  : to configure the 2004 related stereo information type
    361 */
    362 /* ==========================================================================*/
    363 
    364 typedef struct OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004
    365 {
    366 	OMX_U32          nSize;
    367 	OMX_VERSIONTYPE  nVersion;
    368 	OMX_U32          nPortIndex;
    369 	OMX_BOOL         btopFieldIsLeftViewFlag;
    370 	OMX_BOOL         bViewSelfContainedFlag;
    371 } OMX_TI_VIDEO_AVCENC_STEREOINFO2004;
    372 
    373 typedef enum OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE{
    374 	OMX_TI_Video_FRAMEPACK_CHECKERBOARD        = 0,
    375 	OMX_TI_Video_FRAMEPACK_COLUMN_INTERLEAVING = 1,
    376 	OMX_TI_Video_FRAMEPACK_ROW_INTERLEAVING    = 2,
    377 	OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE        = 3,
    378 	OMX_TI_Video_FRAMEPACK_TOP_BOTTOM          = 4,
    379 	OMX_TI_Video_FRAMEPACK_TYPE_DEFAULT        = OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE,
    380 	OMX_TI_Video_FRAMEPACK_TYPE_MAX = 0x7FFFFFFF
    381 } OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE;
    382 
    383 /* ========================================================================== */
    384 /*!
    385  @brief OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010 : to configure the 2010 related stereo information type
    386 */
    387 /* ==========================================================================*/
    388 
    389 typedef struct OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010
    390 {
    391 	OMX_U32          nSize;
    392 	OMX_VERSIONTYPE nVersion;
    393 	OMX_U32          nPortIndex;
    394 	OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE eFramePackingType;
    395 	OMX_U8         nFrame0PositionX;
    396 	OMX_U8         nFrame0PositionY;
    397 	OMX_U8         nFrame1PositionX;
    398 	OMX_U8         nFrame1PositionY;
    399 }OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010;
    400 
    401 /**
    402  *	@brief	 Specifies Transform Block Size
    403  */
    404 typedef enum OMX_VIDEO_TRANSFORMBLOCKSIZETYPE {
    405 	OMX_Video_Transform_Block_Size_4x4 =0,	//!< Transform blocks size is 8x8 : Valid for only High Profile
    406 	OMX_Video_Transform_Block_Size_8x8,	//!< Transform blocks size is 4x4
    407 	OMX_Video_Transform_Block_Size_Adaptive, //!< Adaptive transform block size : encoder decides as per content
    408     OMX_Video_Transform_Block_Size_MAX =  0X7FFFFFFF
    409 }OMX_VIDEO_TRANSFORMBLOCKSIZETYPE;
    410 
    411 /* ========================================================================== */
    412 /*!
    413  @brief OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE : to select the Block Size used for transformation
    414  @param  eTransformBlocksize	to specify Block size used for transformation
    415  							@sa OMX_VIDEO_TRANSFORMBLOCKSIZETYPE
    416 */
    417 /* ==========================================================================*/
    418 
    419 typedef struct OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE{
    420 	OMX_U32	 nSize;
    421 	OMX_VERSIONTYPE nVersion;
    422 	OMX_U32	 nPortIndex;
    423 	OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
    424 }OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE;
    425 
    426 
    427 /* ========================================================================== */
    428 /*!
    429  @brief OMX_VIDEO_CONFIG_SLICECODINGTYPE : to configure the Slice Settings
    430  @param  eSliceMode	to specify the Slice mode
    431  							@sa OMX_VIDEO_AVCSLICEMODETYPE
    432  @param  nSlicesize to specify the sliceSize
    433 */
    434 /* ==========================================================================*/
    435 
    436 typedef struct OMX_VIDEO_CONFIG_SLICECODINGTYPE{
    437 	OMX_U32	 nSize;
    438 	OMX_VERSIONTYPE nVersion;
    439 	OMX_U32	 nPortIndex;
    440 	OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
    441 	OMX_U32	 nSlicesize;
    442 }OMX_VIDEO_CONFIG_SLICECODINGTYPE;
    443 
    444 /**
    445  *	@brief	 Specifies Slice Group Change Direction Flag
    446  */
    447 typedef enum OMX_VIDEO_SLIGRPCHANGEDIRTYPE{
    448   OMX_Video_Raster_Scan             = 0 , //!< 0 : Raster scan order
    449   OMX_Video_Clockwise              = 0 , //!< 0 : Clockwise (used for BOX OUT FMO Params)
    450   OMX_Video_Right                   = 0 , //!< 0 : RIGHT (Used for Wipe FMO type)
    451   OMX_Video_Reverse_Raster_Scan= 1 , //!< 1 : Reverse Raster Scan Order
    452   OMX_Video_Counter_Clockwise       = 1 , //!< 1 : Counter Clockwise (used for BOX OUT FMO Params)
    453   OMX_Video_Left                    = 1,  //!< 1 : LEFT (Used for Wipe FMO type)
    454   OMX_Video_Left_MAX =  0X7FFFFFFF
    455 } OMX_VIDEO_SLICEGRPCHANGEDIRTYPE;
    456 
    457 /* ========================================================================== */
    458 /*!
    459  @brief OMX_TI_VIDEO_PARAM_FMO_ADVANCEDSETTINGS : to configure the FMO Settings
    460  @param
    461 */
    462 /* ==========================================================================*/
    463 typedef struct OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE{
    464 	OMX_U32	 nSize;
    465 	OMX_VERSIONTYPE nVersion;
    466 	OMX_U32 nPortIndex;
    467 	OMX_U8 nNumSliceGroups;
    468 	OMX_U8 nSliceGroupMapType;
    469 	OMX_VIDEO_SLICEGRPCHANGEDIRTYPE eSliceGrpChangeDir;
    470 	OMX_U32 nSliceGroupChangeRate;
    471 	OMX_U32 nSliceGroupChangeCycle;
    472 	OMX_U32 nSliceGroupParams[H264ENC_MAXNUMSLCGPS] ;
    473 }OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE;
    474 
    475 /* ========================================================================== */
    476 /*!
    477  @brief OMX_TI_VIDEO_CONFIG_QPSETTINGS : to configure the Qp Settings of I, P &B Frames
    478  @param  nQpI
    479 */
    480 /* ==========================================================================*/
    481 
    482 typedef struct OMX_VIDEO_CONFIG_QPSETTINGSTYPE{
    483 	OMX_U32	 nSize;
    484 	OMX_VERSIONTYPE nVersion;
    485 	OMX_U32	 nPortIndex;
    486 	OMX_U32	 nQpI;
    487 	OMX_U32	 nQpMaxI;
    488 	OMX_U32	 nQpMinI;
    489 	OMX_U32	 nQpP;
    490 	OMX_U32	 nQpMaxP;
    491 	OMX_U32	 nQpMinP;
    492 	OMX_U32	 nQpOffsetB;
    493 	OMX_U32	 nQpMaxB;
    494 	OMX_U32	 nQpMinB;
    495 }OMX_VIDEO_CONFIG_QPSETTINGSTYPE;
    496 
    497 /* ========================================================================== */
    498 /*!
    499  @brief OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING : to configure the HRD
    500 	(Hypothetical Reference Decoder) related params
    501  @param  nInitialBufferLevel	Initial buffer level for HRD compliance
    502  @param  nHRDBufferSize		Hypothetical Reference Decoder buffer size
    503  @param  nTargetBitrate		Target bitrate to encode with
    504 */
    505 /* ==========================================================================*/
    506 
    507 typedef struct OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING {
    508 	OMX_U32     nSize;
    509 	OMX_VERSIONTYPE     nVersion;
    510 	OMX_U32    nPortIndex;
    511 	OMX_U32    nInitialBufferLevel;
    512 	OMX_U32    nHRDBufferSize;
    513 	OMX_U32    nTargetBitrate;
    514 } OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING;
    515 
    516 /* ========================================================================== */
    517 /*!
    518  @brief OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING : to configure the HRD
    519 	(Hypothetical Reference Decoder) related params
    520  @param  nHRDBufferSize		Hypothetical Reference Decoder Buffer Size
    521  @param  nEncodeBitrate		Target bitrate to encode with
    522 
    523 */
    524 /* ==========================================================================*/
    525 
    526 typedef struct OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING {
    527 	OMX_U32    nSize;
    528 	OMX_VERSIONTYPE     nVersion;
    529 	OMX_U32     nPortIndex;
    530 	OMX_U32     nHRDBufferSize;
    531 	OMX_U32     nEncodeBitrate;
    532 } OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING;
    533 
    534 /* ========================================================================= */
    535 /*!
    536  @brief OMX_TI_VIDEO_CODINGTYPE :
    537 	Extension to video coding type enum for VP6 and VP7
    538  @param
    539 */
    540 /* ==========================================================================*/
    541 
    542 typedef enum OMX_TI_VIDEO_CODINGTYPE {
    543 	OMX_VIDEO_CodingVP6 =
    544 		(OMX_VIDEO_CODINGTYPE) OMX_VIDEO_CodingVendorStartUnused +1,  /* VP6 */
    545 	OMX_VIDEO_CodingVP7, /* VP7 */
    546 	OMX_TI_VIDEO_CodingSORENSONSPK   /* Sorenson Spark */
    547 }OMX_TI_VIDEO_CODINGTYPE;
    548 
    549 
    550 /* ========================================================================= */
    551 /*!
    552  @brief OMX_TI_VIDEO_MPEG4LEVELTYPE:
    553         Extension to MPEG-4 level to cater to level 6
    554  @param
    555 */
    556 /* ==========================================================================*/
    557 typedef enum OMX_TI_VIDEO_MPEG4LEVELTYPE {
    558         OMX_TI_VIDEO_MPEG4Level6  =
    559             (OMX_VIDEO_MPEG4LEVELTYPE) OMX_VIDEO_MPEG4LevelVendorStartUnused + 1
    560 } OMX_TI_VIDEO_MPEG4LEVELTYPE;
    561 
    562 
    563 
    564 /**
    565  *	@brief	 Specifies various intra refresh methods
    566  */
    567 typedef enum OMX_TI_VIDEO_INTRAREFRESHTYPE {
    568     OMX_TI_VIDEO_IntraRefreshNone = 0,
    569     OMX_TI_VIDEO_IntraRefreshCyclicMbs,
    570     OMX_TI_VIDEO_IntraRefreshCyclicRows,
    571     OMX_TI_VIDEO_IntraRefreshMandatory,
    572     OMX_TI_VIDEO_IntraRefreshMax = 0x7FFFFFFF
    573 } OMX_TI_VIDEO_INTRAREFRESHTYPE;
    574 
    575 
    576 /* ========================================================================== */
    577 /*!
    578  @brief OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE  : Configuration parameters for
    579                                                intra refresh settings
    580  @param  eRefreshMode		Various refresh modes supported
    581  @param  nIntraRefreshRate 	Intra refresh rate
    582 */
    583 /* ==========================================================================*/
    584 
    585 typedef struct OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE {
    586     OMX_U32 nSize;
    587     OMX_VERSIONTYPE nVersion;
    588     OMX_U32 nPortIndex;
    589     OMX_TI_VIDEO_INTRAREFRESHTYPE eRefreshMode;
    590     OMX_U32 nIntraRefreshRate;
    591 } OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE;
    592 
    593 
    594 /* ============================================================================= */
    595 /*!
    596  @brief OMX_TI_STEREODECINFO : Structure to access 2004 SEI message generated by
    597  H264 decoder as metatadata on its output port.
    598  */
    599 /* ============================================================================= */
    600 
    601 typedef struct OMX_TI_STEREODECINFO {
    602 	OMX_U32 nFieldViewsFlag;
    603 	OMX_U32 nTopFieldIsLeftViewFlag;
    604 	OMX_U32 nCurrentFrameIsLeftViewFlag;
    605 	OMX_U32 nNextFrameIsSecondViewFlag;
    606 	OMX_U32 nLeftViewSelfContainedFlag;
    607 	OMX_U32 nRightViewSelfContainedFlag;
    608 } OMX_TI_STEREODECINFO;
    609 
    610 typedef struct OMX_TI_FRAMEPACKINGDECINFO {
    611 	OMX_U32 nFramePackingArrangementId;
    612 	OMX_U32 nFramePackingArrangementRepetitionPeriod;
    613 	OMX_U8  nFramePackingArrangementCancelFlag;
    614 	OMX_U8  nFramePackingArrangementType;
    615 	OMX_U8  nQuincunxSamplingFlag;
    616 	OMX_U8  nContentInterpretationType;
    617 	OMX_U8  nSpatialFlippingFlag;
    618 	OMX_U8  nFrame0FlippedFlag;
    619 	OMX_U8  nFieldViewsFlag;
    620 	OMX_U8  nCurrentFrameIsFrame0Flag;
    621 	OMX_U8  nFrame0SelfContainedFlag;
    622 	OMX_U8  nFrame1SelfContainedFlag;
    623 	OMX_U8  nFrame0GridPositionX;
    624 	OMX_U8  nFrame0GridPositionY;
    625 	OMX_U8  nFrame1GridPositionX;
    626 	OMX_U8  nFrame1GridPositionY;
    627 	OMX_U8  nFramePackingArrangementReservedByte;
    628 	OMX_U8  nFramePackingArrangementExtensionFlag;
    629 } OMX_TI_FRAMEPACKINGDECINFO;
    630 
    631 /* ============================================================================= */
    632 /*!
    633  @brief OMX_TI_VIDEO_RANGEMAPPING : Structure to access luma and chroma range
    634                                     mapping generated by decoders as
    635                                     metatadata on its output port.
    636  @param nRangeMappingLuma     Luma scale factor for range mapping.
    637  @param nRangeMappingChroma   Chroma scale factor for range mapping.
    638 */
    639 /* ============================================================================= */
    640 
    641 typedef struct OMX_TI_VIDEO_RANGEMAPPING {
    642 	OMX_U32 nRangeMappingLuma;
    643 	OMX_U32 nRangeMappingChroma;
    644 } OMX_TI_VIDEO_RANGEMAPPING;
    645 
    646 /* ============================================================================= */
    647 /*!
    648  @brief OMX_TI_VIDEO_RESCALINGMATRIX : Structure to access rescaled
    649                                        width/height generated by decoders
    650                                        as metatadata on its output port.
    651  @param nScaledHeight   Scaled image width for post processing for decoder.
    652  @param nScaledWidth    Scaled image height for post processing for decoder.
    653 */
    654 /* ============================================================================= */
    655 
    656 typedef struct OMX_TI_VIDEO_RESCALINGMATRIX {
    657 	OMX_U32 nScaledHeight;
    658 	OMX_U32 nScaledWidth;
    659 } OMX_TI_VIDEO_RESCALINGMATRIX;
    660 
    661 
    662 /*==========================================================================*/
    663 /*!
    664  @brief OMX_TI_PARAM_PAYLOADHEADERFLAG : To specify the payload headerflag
    665                                          for VP6/VP7 decoder.
    666  @param bPayloadHeaderFlag      Flag - TRUE indicates that frame length and
    667                                 timestamp(for IVF format) will be part of
    668                                 frame input buffer.
    669                                 Flag - FALSE indecates that frame length and
    670                                 timestamp(for IVF format) will not be part of
    671                                 the input buffer.
    672 */
    673 /*==========================================================================*/
    674 
    675 typedef struct OMX_TI_PARAM_PAYLOADHEADERFLAG {
    676 	OMX_U32 nSize;
    677 	OMX_VERSIONTYPE nVersion;
    678 	OMX_BOOL bPayloadHeaderFlag;
    679 } OMX_TI_PARAM_PAYLOADHEADERFLAG;
    680 
    681 
    682 /*==========================================================================*/
    683 /*!
    684 @brief OMX_TI_PARAM_IVFFLAG : Suport added to handle IVF header Decoding Mode
    685 @param bIvfFlag               TRUE enables IVF decoding mode.
    686                               FALSE indicates bitstream format is non-IVF.
    687 */
    688 /*==========================================================================*/
    689 
    690 typedef struct OMX_TI_PARAM_IVFFLAG {
    691 	OMX_U32 nSize;
    692 	OMX_VERSIONTYPE nVersion;
    693 	OMX_BOOL bIvfFlag;
    694 } OMX_TI_PARAM_IVFFLAG;
    695 
    696 // A pointer to this struct is passed to OMX_SetParameter() when the extension
    697 // index "OMX.google.android.index.storeMetaDataInBuffers"
    698 // is given.
    699 //
    700 // When meta data is stored in the video buffers passed between OMX clients
    701 // and OMX components, interpretation of the buffer data is up to the
    702 // buffer receiver, and the data may or may not be the actual video data, but
    703 // some information helpful for the receiver to locate the actual data.
    704 // The buffer receiver thus needs to know how to interpret what is stored
    705 // in these buffers, with mechanisms pre-determined externally. How to
    706 // interpret the meta data is outside of the scope of this method.
    707 //
    708 // Currently, this is specifically used to pass meta data from video source
    709 // (camera component, for instance) to video encoder to avoid memcpying of
    710 // input video frame data. To do this, bStoreMetaDta is set to OMX_TRUE.
    711 // If bStoreMetaData is set to false, real YUV frame data will be stored
    712 // in the buffers. In addition, if no OMX_SetParameter() call is made
    713 // with the corresponding extension index, real YUV data is stored
    714 // in the buffers.
    715 typedef struct OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS {
    716     OMX_U32 nSize;
    717     OMX_VERSIONTYPE nVersion;
    718     OMX_U32 nPortIndex;
    719     OMX_BOOL bStoreMetaData;
    720 } OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS;
    721 
    722 #endif /* OMX_TI_VIDEO_H */
    723 
    724