1 /*-------------------------------------------------------------------------- 2 Copyright (c) 2011 Code Aurora Forum. All rights reserved. 3 4 Redistribution and use in source and binary forms, with or without 5 modification, are permitted provided that the following conditions are met: 6 * Redistributions of source code must retain the above copyright 7 notice, this list of conditions and the following disclaimer. 8 * Redistributions in binary form must reproduce the above copyright 9 notice, this list of conditions and the following disclaimer in the 10 documentation and/or other materials provided with the distribution. 11 * Neither the name of Code Aurora nor 12 the names of its contributors may be used to endorse or promote 13 products derived from this software without specific prior written 14 permission. 15 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 20 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 --------------------------------------------------------------------------*/ 28 29 #ifndef __H_QOMX_VIDEOEXTENSIONS_H__ 30 #define __H_QOMX_VIDEOEXTENSIONS_H__ 31 32 /*======================================================================== 33 34 *//** @file QOMX_VideoExtensions.h 35 36 @par FILE SERVICES: 37 Qualcomm extensions API for OpenMax IL Video. 38 39 This file contains the description of the Qualcomm OpenMax IL 40 video extention interface, through which the IL client and OpenMax 41 components can access additional video capabilities. 42 43 *//*====================================================================== */ 44 45 46 /*========================================================================== */ 47 48 /*======================================================================== 49 50 INCLUDE FILES FOR MODULE 51 52 ========================================================================== */ 53 #include <OMX_Core.h> 54 #include <OMX_Video.h> 55 56 /*======================================================================== 57 58 DEFINITIONS AND DECLARATIONS 59 60 ========================================================================== */ 61 62 #if defined( __cplusplus ) 63 extern "C" 64 { 65 #endif /* end of macro __cplusplus */ 66 67 /* Video extension strings */ 68 #define OMX_QCOM_INDEX_PARAM_VIDEO_SYNTAXHDR "OMX.QCOM.index.param.video.SyntaxHdr" 69 #define OMX_QCOM_INDEX_PARAM_VIDEO_ENCODERMODE "OMX.QCOM.index.param.video.EncoderMode" 70 #define OMX_QCOM_INDEX_CONFIG_VIDEO_INTRAREFRESH "OMX.QCOM.index.config.video.IntraRefresh" 71 #define OMX_QCOM_INDEX_CONFIG_VIDEO_INTRAPERIOD "OMX.QCOM.index.config.video.IntraPeriod" 72 #define OMX_QCOM_INDEX_CONFIG_VIDEO_TEMPORALSPATIALTRADEOFF "OMX.QCOM.index.config.video.TemporalSpatialTradeOff" 73 #define OMX_QCOM_INDEX_CONFIG_VIDEO_MBCONCEALMENTREPORTING "OMX.QCOM.index.config.video.MBConcealmentReporting" 74 #define OMX_QCOM_INDEX_PARAM_VIDEO_EXTRADATAMULTISLICEINFO "OMX.QCOM.index.param.video.ExtraDataMultiSliceInfo" /**< reference: QOMX_ENABLETYPE */ 75 #define OMX_QCOM_INDEX_CONFIG_VIDEO_FLOWSTATUS "OMX.QCOM.index.config.video.FlowStatus" /**< reference: QOMX_FLOWSTATUSTYPE */ 76 #define OMX_QCOM_INDEX_PARAM_VIDEO_PICTURETYPEDECODE "OMX.QCOM.index.param.video.PictureTypeDecode" /**< reference: QOMX_VIDEO_DECODEPICTURETYPE */ 77 #define OMX_QCOM_INDEX_PARAM_VIDEO_SAMPLEASPECTRATIO "OMX.QCOM.index.param.video.SampleAspectRatio" /**< reference: QOMX_VIDEO_SAMPLEASPECTRATIO */ 78 79 /* Video coding types */ 80 #define OMX_QCOM_INDEX_PARAM_VIDEO_DIVX "OMX.QCOM.index.param.video.DivX" 81 #define OMX_QCOM_INDEX_PARAM_VIDEO_VP "OMX.QCOM.index.param.video.VP" 82 #define OMX_QCOM_INDEX_PARAM_VIDEO_SPARK "OMX.QCOM.index.param.video.Spark" 83 #define OMX_QCOM_INDEX_PARAM_VIDEO_VC1 "OMX.QCOM.index.param.video.VC1" 84 85 /** 86 * Enumeration used to define the extended video compression 87 * codings, not present in the OpenMax IL 1.1.2 specification. 88 * NOTE: This essentially refers to file extensions. If the 89 * coding is being used to specify the ENCODE type, then 90 * additional work must be done to configure the exact 91 * flavor of the compression to be used. 92 */ 93 typedef enum QOMX_VIDEO_CODINGTYPE 94 { 95 QOMX_VIDEO_CodingDivX = 0x7F000001, /**< all versions of DivX */ 96 QOMX_VIDEO_CodingVP = 0x7F000002, /**< all versions of On2 VP codec */ 97 QOMX_VIDEO_CodingSpark = 0x7F000003, /**< Sorenson Spark */ 98 QOMX_VIDEO_CodingVC1 = 0x7F000004, /**< VC-1 */ 99 QOMX_VIDEO_MPEG1 = 0x7F000005 /**< MPEG-1 */ 100 } QOMX_VIDEO_CODINGTYPE; 101 102 /** 103 * DivX Versions 104 */ 105 typedef enum QOMX_VIDEO_DIVXFORMATTYPE { 106 QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */ 107 QOMX_VIDEO_DIVXFormat311 = 0x02, /**< DivX 3.11 */ 108 QOMX_VIDEO_DIVXFormat4 = 0x04, /**< DivX 4 */ 109 QOMX_VIDEO_DIVXFormat5 = 0x08, /**< DivX 5 */ 110 QOMX_VIDEO_DIVXFormat6 = 0x10, /**< DivX 6 */ 111 QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000, 112 QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000, 113 QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF 114 } QOMX_VIDEO_DIVXFORMATTYPE; 115 116 /** 117 * DivX profile types, each profile indicates support for 118 * various performance bounds. 119 */ 120 typedef enum QOMX_VIDEO_DIVXPROFILETYPE { 121 QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */ 122 QOMX_VIDEO_DivXProfileMobile = 0x02, /**< Mobile Profile */ 123 QOMX_VIDEO_DivXProfileMT = 0x04, /**< Mobile Theatre Profile */ 124 QOMX_VIDEO_DivXProfileHT = 0x08, /**< Home Theatre Profile */ 125 QOMX_VIDEO_DivXProfileHD = 0x10, /**< High Definition Profile */ 126 QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000, 127 QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000, 128 QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF 129 } QOMX_VIDEO_DIVXPROFILETYPE; 130 131 /** 132 * DivX Video Params 133 * 134 * STRUCT MEMBERS: 135 * nSize : Size of the structure in bytes 136 * nVersion : OMX specification version information 137 * nPortIndex : Port that this structure applies to 138 * eFormat : Version of DivX stream / data 139 * eProfile : Profile of DivX stream / data 140 */ 141 typedef struct QOMX_VIDEO_PARAM_DIVXTYPE { 142 OMX_U32 nSize; 143 OMX_VERSIONTYPE nVersion; 144 OMX_U32 nPortIndex; 145 QOMX_VIDEO_DIVXFORMATTYPE eFormat; 146 QOMX_VIDEO_DIVXPROFILETYPE eProfile; 147 } QOMX_VIDEO_PARAM_DIVXTYPE; 148 149 /** 150 * VP Versions 151 */ 152 typedef enum QOMX_VIDEO_VPFORMATTYPE { 153 QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */ 154 QOMX_VIDEO_VPFormat6 = 0x02, /**< VP6 Video Format */ 155 QOMX_VIDEO_VPFormat7 = 0x04, /**< VP7 Video Format */ 156 QOMX_VIDEO_VPFormat8 = 0x08, /**< VP8 Video Format */ 157 QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000, 158 QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000, 159 QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF 160 } QOMX_VIDEO_VPFORMATTYPE; 161 162 /** 163 * VP profile types, each profile indicates support for various 164 * encoding tools. 165 */ 166 typedef enum QOMX_VIDEO_VPPROFILETYPE { 167 QOMX_VIDEO_VPProfileSimple = 0x01, /**< Simple Profile, applies to VP6 only */ 168 QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */ 169 QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */ 170 QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */ 171 QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */ 172 QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */ 173 QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000, 174 QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000, 175 QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF 176 } QOMX_VIDEO_VPPROFILETYPE; 177 178 /** 179 * VP Video Params 180 * 181 * STRUCT MEMBERS: 182 * nSize : Size of the structure in bytes 183 * nVersion : OMX specification version information 184 * nPortIndex : Port that this structure applies to 185 * eFormat : Format of VP stream / data 186 * eProfile : Profile or Version of VP stream / data 187 */ 188 typedef struct QOMX_VIDEO_PARAM_VPTYPE { 189 OMX_U32 nSize; 190 OMX_VERSIONTYPE nVersion; 191 OMX_U32 nPortIndex; 192 QOMX_VIDEO_VPFORMATTYPE eFormat; 193 QOMX_VIDEO_VPPROFILETYPE eProfile; 194 } QOMX_VIDEO_PARAM_VPTYPE; 195 196 /** 197 * Spark Versions 198 */ 199 typedef enum QOMX_VIDEO_SPARKFORMATTYPE { 200 QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */ 201 QOMX_VIDEO_SparkFormat0 = 0x02, /**< Video Format Version 0 */ 202 QOMX_VIDEO_SparkFormat1 = 0x04, /**< Video Format Version 1 */ 203 QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000, 204 QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000, 205 QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF 206 } QOMX_VIDEO_SPARKFORMATTYPE; 207 208 /** 209 * Spark Video Params 210 * 211 * STRUCT MEMBERS: 212 * nSize : Size of the structure in bytes 213 * nVersion : OMX specification version information 214 * nPortIndex : Port that this structure applies to 215 * eFormat : Version of Spark stream / data 216 */ 217 typedef struct QOMX_VIDEO_PARAM_SPARKTYPE { 218 OMX_U32 nSize; 219 OMX_VERSIONTYPE nVersion; 220 OMX_U32 nPortIndex; 221 QOMX_VIDEO_SPARKFORMATTYPE eFormat; 222 } QOMX_VIDEO_PARAM_SPARKTYPE; 223 224 /** 225 * VC-1 profile types, each profile indicates support for 226 * various encoding tools. 227 */ 228 typedef enum QOMX_VIDEO_VC1PROFILETYPE { 229 QOMX_VIDEO_VC1ProfileSimple = 0x01, /**< Simple Profile */ 230 QOMX_VIDEO_VC1ProfileMain = 0x02, /**< Main Profile */ 231 QOMX_VIDEO_VC1ProfileAdvanced = 0x04, /**< Advanced Profile */ 232 QOMX_VIDEO_VC1ProfileKhronosExtensions = 0x6F000000, 233 QOMX_VIDEO_VC1ProfileVendorStartUnused = 0x7F000000, 234 QOMX_VIDEO_VC1ProfileMax = 0x7FFFFFFF 235 } QOMX_VIDEO_VC1PROFILETYPE; 236 237 /** 238 * VC-1 level types, each level indicates support for various 239 * performance bounds. 240 */ 241 typedef enum QOMX_VIDEO_VC1LEVELTYPE { 242 QOMX_VIDEO_VC1LevelLow = 0x01, /**< Low Level, applies to simple and main profiles*/ 243 QOMX_VIDEO_VC1LevelMedium = 0x02, /**< Medium Level, applies to simple and main profiles */ 244 QOMX_VIDEO_VC1LevelHigh = 0x04, /**< High Level, applies to main profile only */ 245 QOMX_VIDEO_VC1Level0 = 0x08, /**< Level 0, applies to advanced profile only */ 246 QOMX_VIDEO_VC1Level1 = 0x10, /**< Level 1, applies to advanced profile only */ 247 QOMX_VIDEO_VC1Level2 = 0x20, /**< Level 2, applies to advanced profile only */ 248 QOMX_VIDEO_VC1Level3 = 0x40, /**< Level 3, applies to advanced profile only */ 249 QOMX_VIDEO_VC1Level4 = 0x80, /**< Level 4, applies to advanced profile only */ 250 QOMX_VIDEO_VC1LevelKhronosExtensions = 0x6F000000, 251 QOMX_VIDEO_VC1LevelVendorStartUnused = 0x7F000000, 252 QOMX_VIDEO_VC1LevelMax = 0x7FFFFFFF 253 } QOMX_VIDEO_VC1LEVELTYPE; 254 255 /** 256 * VC-1 Video Params 257 * 258 * STRUCT MEMBERS: 259 * nSize : Size of the structure in bytes 260 * nVersion : OMX specification version information 261 * nPortIndex : Port that this structure applies to 262 * eProfile : Profile of VC-1 stream / data 263 * eLevel : Level of VC-1 stream / data 264 */ 265 typedef struct QOMX_VIDEO_PARAM_VC1TYPE { 266 OMX_U32 nSize; 267 OMX_VERSIONTYPE nVersion; 268 OMX_U32 nPortIndex; 269 QOMX_VIDEO_VC1PROFILETYPE eProfile; 270 QOMX_VIDEO_VC1LEVELTYPE eLevel; 271 } QOMX_VIDEO_PARAM_VC1TYPE; 272 273 /** 274 * Extended MPEG-4 level types not defined in the OpenMax IL 275 * 1.1.2 specification, each level indicates support for various 276 * frame sizes, bit rates, decoder frame rates. 277 */ 278 typedef enum QOMX_VIDEO_MPEG4LEVELTYPE { 279 QOMX_VIDEO_MPEG4Level6 = 0x7F000001, /**< Level 6 */ 280 QOMX_VIDEO_MPEG4Level7 = 0x7F000002, /**< Level 7 */ 281 QOMX_VIDEO_MPEG4Level8 = 0x7F000003, /**< Level 8 */ 282 QOMX_VIDEO_MPEG4Level9 = 0x7F000004, /**< Level 9 */ 283 QOMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF 284 } QOMX_VIDEO_MPEG4LEVELTYPE; 285 286 /** 287 * This structure is used in retrieving the syntax header from a 288 * video encoder component, or setting the out of band syntax 289 * header configuration data on a video decoder component. 290 * 291 * STRUCT MEMBERS: 292 * nSize : Size of the structure in bytes 293 * nVersion : OMX specification version info 294 * nPortIndex : Port that this structure applies to 295 * nBytes : When used with OMX_GetParameter for the encoder 296 * component, it is a read-write field. When 297 * QOMX_VIDEO_SYNTAXHDRTYPE is passed in 298 * OMX_GetParameter this is the size of the buffer 299 * array pointed by data field. When the 300 * OMX_GetParameter call returns this is the 301 * amount of data within the buffer array. 302 * 303 * The IL client needs to allocate the buffer 304 * array and then request for the syntax header. 305 * If the size of buffer array to allocate is 306 * unknown to the IL client, then it can call 307 * OMX_GetParamter with nBytes set to 0. In this 308 * case, when OMX_GetParameter returns, the nBytes 309 * field will be set to the size of the syntax 310 * header. IL Client can then allocate a buffer of 311 * this size and call OMX_GetParamter again. 312 * 313 * When used with OMX_SetParameter for the decoder 314 * component, it is a read-only field specifying 315 * the amount of data in the buffer array. 316 * data : The syntax header data. The format of the 317 * syntax header is specific to the video codec, 318 * and is described below. 319 * 320 * H.263 : N/A 321 * H.264 : The SPS and PPS parameter sets 322 * MPEG-4 : The VO, VOS, and VOL header 323 * WMV7 : The "Extra Data" info, in the ASF Stream 324 * Properties Object. 325 * WMV8 : The "Extra Data" info, in the ASF Stream 326 * Properties Object. 327 * WMV9 SP/MP : The STRUCT_C portion of the sequence layer 328 * meta data, defined in Table 263 of the VC-1 329 * specification. 330 * VC-1 SP/MP : The STRUCT_C portion of the sequence layer 331 * meta data, defined in Table 263 of the VC-1 332 * specification. 333 * VC-1 AP : The sequence and entry point header 334 * DivX 3 : N/A 335 * DivX 4.x : The VO, VOS, and VOL header 336 * DivX 5.x : The VO, VOS, and VOL header 337 * DivX 6.x : The VO, VOS, and VOL header 338 * VP6 : N/A 339 * Spark : N/A 340 */ 341 typedef struct QOMX_VIDEO_SYNTAXHDRTYPE { 342 OMX_U32 nSize; 343 OMX_VERSIONTYPE nVersion; 344 OMX_U32 nPortIndex; 345 OMX_U32 nBytes; 346 OMX_U8 data[1]; 347 } QOMX_VIDEO_SYNTAXHDRTYPE; 348 349 350 /** 351 * Enumeration used to define the extended video intra refresh types, not 352 * present in the OpenMax IL 1.1.2 specification. 353 * 354 * ENUMS: 355 * IntraRefreshRandom : Random intra refresh mode. 356 */ 357 typedef enum QOMX_VIDEO_INTRAREFRESHTYPE 358 { 359 QOMX_VIDEO_IntraRefreshRandom = 0x7F100000 360 } QOMX_VIDEO_INTRAREFRESHTYPE; 361 362 363 /** 364 * This structure is used to configure the intra periodicity for encoder. 365 * 366 * STRUCT MEMBERS: 367 * nSize : Size of the structure in bytes 368 * nVersion : OMX specification version info 369 * nPortIndex : Port that this structure applies to 370 * nIDRPeriod : Defines the periodicity of IDR occurrence. This specifies 371 * coding a frame as IDR after a specific number of intra 372 * frames. The periodicity of intra frame coding is specified by 373 * the nPFrames. If nIDRPeriod is set to 0, only the first 374 * frame of the encode session is an IDR frame. This field is 375 * ignored for non-AVC codecs and is used only for codecs that 376 * support IDR Period. 377 * nPFrames : Specifies the number of P frames between each I Frame. 378 * nBFrames : Specifies the number of B frames between each I Frame. 379 */ 380 typedef struct QOMX_VIDEO_INTRAPERIODTYPE { 381 OMX_U32 nSize; 382 OMX_VERSIONTYPE nVersion; 383 OMX_U32 nPortIndex; 384 OMX_U32 nIDRPeriod; 385 OMX_U32 nPFrames; 386 OMX_U32 nBFrames; 387 } QOMX_VIDEO_INTRAPERIODTYPE; 388 389 390 /** 391 * Enumeration used to define the extended video extra data payload types not 392 * present in the OpenMax IL 1.1.2 specification. 393 * 394 * ENUMS: 395 * VideoMultiSliceInfo : Multi slice layout information 396 * 397 * Slice information layout: 398 * First 4 bytes = Number of Slice Entries 399 * 400 * Then individual slice entries: 8 bytes per entry. 401 * Slice1 information: offset (4 bytes), Length (4 bytes) 402 * Slice2 information: offset (4 bytes), Length (4 bytes) 403 * Slice3 information: offset (4 bytes), Length (4 bytes) 404 * ................................... 405 * ................................... 406 * SliceN information: offset (4 bytes), Length (4 bytes) 407 * 408 * 409 * VideoNumConcealedMB : Number of concealed MBs 410 * 411 * The data array consists of an unsigned 32-bit size field 412 * indicating the number of concealed macroblocks in the 413 * uncompressed frame. 414 * 415 * 416 * QOMX_ExtraDataOMXIndex : Indicates that the data payload contains an 417 * OpenMax index and associated payload. 418 * 419 * The data of the extra data payload shall contain the value of the 420 * OMX_INDEXTYPE corresponding to the requested operation as an unsigned 421 * 32 bit number occupying the first four bytes of the payload. The index 422 * will be immediately followed by the associated structure. Padding bytes 423 * are appended to ensure 32 bit address alignment if needed. 424 */ 425 typedef enum QOMX_VIDEO_EXTRADATATYPE 426 { 427 QOMX_ExtraDataVideoMultiSliceInfo = 0x7F100000, 428 QOMX_ExtraDataVideoNumConcealedMB, 429 QOMX_ExtraDataOMXIndex, 430 QOMX_ExtraDataHDCPEncryptionInfo 431 } QOMX_VIDEO_EXTRADATATYPE; 432 433 434 /** 435 * Enumeration used to define the video encoder modes 436 * 437 * ENUMS: 438 * EncoderModeDefault : Default video recording mode. 439 * All encoder settings made through 440 * OMX_SetParameter/OMX_SetConfig are applied. No 441 * parameter is overridden. 442 * EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging 443 * Service). This mode is similar to EncoderModeDefault 444 * except that here the Rate control mode is overridden 445 * internally and set as a variant of variable bitrate with 446 * variable frame rate. After this mode is set if the IL 447 * client tries to set OMX_VIDEO_CONTROLRATETYPE via 448 * OMX_IndexParamVideoBitrate that would be rejected. For 449 * this, client should set mode back to EncoderModeDefault 450 * first and then change OMX_VIDEO_CONTROLRATETYPE. 451 */ 452 typedef enum QOMX_VIDEO_ENCODERMODETYPE 453 { 454 QOMX_VIDEO_EncoderModeDefault = 0x01, 455 QOMX_VIDEO_EncoderModeMMS = 0x02, 456 QOMX_VIDEO_EncoderModeMax = 0x7FFFFFFF 457 } QOMX_VIDEO_ENCODERMODETYPE; 458 459 /** 460 * This structure is used to set the video encoder mode. 461 * 462 * STRUCT MEMBERS: 463 * nSize : Size of the structure in bytes 464 * nVersion : OMX specification version info 465 * nPortIndex : Port that this structure applies to 466 * nMode : defines the video encoder mode 467 */ 468 typedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE { 469 OMX_U32 nSize; 470 OMX_VERSIONTYPE nVersion; 471 OMX_U32 nPortIndex; 472 QOMX_VIDEO_ENCODERMODETYPE nMode; 473 } QOMX_VIDEO_PARAM_ENCODERMODETYPE; 474 475 476 /** 477 * This structure is used to set the temporal (picture rate) - spatial 478 * (picture quality) trade-off factor. 479 * This setting is only valid when rate control is enabled and set to a mode 480 * with variable frame rate. For all other rate control modes this setting is 481 * ignored. 482 * 483 * STRUCT MEMBERS: 484 * nSize : Size of the structure in bytes 485 * nVersion : OMX specification version info 486 * nPortIndex : Port that this structure applies to 487 * nTSFactor : temporal-spatial tradeoff factor value in the range of 0-100. 488 * A factor of 0 won't emphasizes picture rate in rate 489 * control decisions at all i.e only picture quality is emphasized. For 490 * increasing values from 1 to 99 the emphasis of picture rate in rate 491 * control decisions increases. A factor of 100 emphasizes only picture rate 492 * in rate control decisions. 493 */ 494 typedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE { 495 OMX_U32 nSize; 496 OMX_VERSIONTYPE nVersion; 497 OMX_U32 nPortIndex; 498 OMX_U32 nTSFactor; 499 } QOMX_VIDEO_TEMPORALSPATIALTYPE; 500 501 /** 502 * This structure is used to enable or disable the MB concealmenet reporting 503 * for the uncompressed frames emitted from the port. 504 * 505 * STRUCT MEMBERS: 506 * nSize : Size of the structure in bytes 507 * nVersion : OMX specification version info 508 * nPortIndex : Port that this structure applies to 509 * bEnableMBConcealmentReporting : Flag indicating whether MB concealment 510 * reporting is enabled or disabled. 511 * OMX_TRUE: Enables MB concealment reporting 512 * OMX_FALSE: Disables MB concealment reporting 513 */ 514 typedef struct QOMX_VIDEO_MBCONCEALMENTREPORTINGTYPE { 515 OMX_U32 nSize; 516 OMX_VERSIONTYPE nVersion; 517 OMX_U32 nPortIndex; 518 OMX_BOOL bEnableMBConcealmentReporting; 519 } QOMX_VIDEO_MBCONCEALMENTREPORTINGTYPE; 520 521 /** 522 * Specifies the extended picture types. These values should be 523 * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to 524 * signal all pictures types which are allowed. 525 * 526 * ENUMS: 527 * H.264 Specific Picture Types: IDR 528 */ 529 typedef enum QOMX_VIDEO_PICTURETYPE { 530 QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000 531 } QOMX_VIDEO_PICTURETYPE; 532 533 /** 534 * This structure is used to configure the processing of 535 * specific picture types. 536 * 537 * STRUCT MEMBERS: 538 * nSize : Size of the structure in bytes 539 * nVersion : OMX specification version info 540 * nPortIndex : Port that this structure applies to 541 * nPictureTypes : Specifies the picture type(s) 542 * that shall be processed. The value consists 543 * of the desired picture types, defined by the 544 * OMX_VIDEO_PICTURETYPE and 545 * QOMX_VIDEO_PICTURETYPE enumerations, OR'd to 546 * signal all the pictures types which are 547 * allowed. 548 */ 549 typedef struct QOMX_VIDEO_DECODEPICTURETYPE { 550 OMX_U32 nSize; 551 OMX_VERSIONTYPE nVersion; 552 OMX_U32 nPortIndex; 553 OMX_U32 nPictureTypes; 554 } QOMX_VIDEO_DECODEPICTURETYPE; 555 556 /** 557 * This structure describes the sample aspect ratio information. 558 * 559 * STRUCT MEMBERS: 560 * nSize : Size of the structure in bytes 561 * nVersion : OMX specification version info 562 * nPortIndex : Port that this structure applies to 563 * nWidth : Specifies the horizontal aspect size of 564 * the sample 565 * nHeight : Specifies the vertical aspect size of the 566 * sample 567 */ 568 typedef struct QOMX_VIDEO_SAMPLEASPECTRATIO { 569 OMX_U32 nSize; 570 OMX_VERSIONTYPE nVersion; 571 OMX_U32 nPortIndex; 572 OMX_U16 nWidth; 573 OMX_U16 nHeight; 574 } QOMX_VIDEO_SAMPLEASPECTRATIO; 575 576 #if defined( __cplusplus ) 577 } 578 #endif /* end of macro __cplusplus */ 579 580 #endif /* end of macro __H_QOMX_VIDEOEXTENSIONS_H__ */ 581