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