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