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