1 /*-------------------------------------------------------------------------- 2 Copyright (c) 2009-2016, 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 #ifndef __OMX_QCOM_EXTENSIONS_H__ 29 #define __OMX_QCOM_EXTENSIONS_H__ 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif /* __cplusplus */ 34 35 /*============================================================================ 36 *//** @file OMX_QCOMExtns.h 37 This header contains constants and type definitions that specify the 38 extensions added to the OpenMAX Vendor specific APIs. 39 40 *//*========================================================================*/ 41 42 43 /////////////////////////////////////////////////////////////////////////////// 44 // Include Files 45 /////////////////////////////////////////////////////////////////////////////// 46 #include "OMX_Core.h" 47 #include "OMX_Video.h" 48 49 #define OMX_VIDEO_MAX_HP_LAYERS 6 50 /** 51 * This extension is used to register mapping of a virtual 52 * address to a physical address. This extension is a parameter 53 * which can be set using the OMX_SetParameter macro. The data 54 * pointer corresponding to this extension is 55 * OMX_QCOM_MemMapEntry. This parameter is a 'write only' 56 * parameter (Current value cannot be queried using 57 * OMX_GetParameter macro). 58 */ 59 #define OMX_QCOM_EXTN_REGISTER_MMAP "OMX.QCOM.index.param.register_mmap" 60 61 /** 62 * This structure describes the data pointer corresponding to 63 * the OMX_QCOM_MMAP_REGISTER_EXTN extension. This parameter 64 * must be set only 'after' populating a port with a buffer 65 * using OMX_UseBuffer, wherein the data pointer of the buffer 66 * corresponds to the virtual address as specified in this 67 * structure. 68 */ 69 struct OMX_QCOM_PARAM_MEMMAPENTRYTYPE 70 { 71 OMX_U32 nSize; /** Size of the structure in bytes */ 72 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 73 OMX_U32 nPortIndex; /**< Port number the structure applies to */ 74 75 /** 76 * The virtual address of memory block 77 */ 78 OMX_U64 nVirtualAddress; 79 80 /** 81 * The physical address corresponding to the virtual address. The physical 82 * address is contiguous for the entire valid range of the virtual 83 * address. 84 */ 85 OMX_U64 nPhysicalAddress; 86 }; 87 88 #define QOMX_VIDEO_IntraRefreshRandom (OMX_VIDEO_IntraRefreshVendorStartUnused + 0) 89 90 /* This error event is used for H.264 long-term reference (LTR) encoding. 91 * When IL client specifies an LTR frame with its identifier via 92 * OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE to the encoder, if the specified 93 * LTR frame can not be located by the encoder in its LTR list, the encoder 94 * issues this error event to IL client to notify the failure of LTRUse config. 95 */ 96 #define QOMX_ErrorLTRUseFailed (OMX_ErrorVendorStartUnused + 1) 97 98 #define QOMX_VIDEO_BUFFERFLAG_BFRAME 0x00100000 99 100 #define QOMX_VIDEO_BUFFERFLAG_EOSEQ 0x00200000 101 102 #define QOMX_VIDEO_BUFFERFLAG_MBAFF 0x00400000 103 104 #define QOMX_VIDEO_BUFFERFLAG_CANCEL 0x00800000 105 106 #define OMX_QCOM_PORTDEFN_EXTN "OMX.QCOM.index.param.portdefn" 107 /* Allowed APIs on the above Index: OMX_GetParameter() and OMX_SetParameter() */ 108 109 typedef enum OMX_QCOMMemoryRegion 110 { 111 OMX_QCOM_MemRegionInvalid, 112 OMX_QCOM_MemRegionEBI1, 113 OMX_QCOM_MemRegionSMI, 114 OMX_QCOM_MemRegionMax = 0X7FFFFFFF 115 } OMX_QCOMMemoryRegion; 116 117 typedef enum OMX_QCOMCacheAttr 118 { 119 OMX_QCOM_CacheAttrNone, 120 OMX_QCOM_CacheAttrWriteBack, 121 OMX_QCOM_CacheAttrWriteThrough, 122 OMX_QCOM_CacheAttrMAX = 0X7FFFFFFF 123 } OMX_QCOMCacheAttr; 124 125 typedef struct OMX_QCOMRectangle 126 { 127 OMX_S32 x; 128 OMX_S32 y; 129 OMX_S32 dx; 130 OMX_S32 dy; 131 } OMX_QCOMRectangle; 132 133 /** OMX_QCOMFramePackingFormat 134 * Input or output buffer format 135 */ 136 typedef enum OMX_QCOMFramePackingFormat 137 { 138 /* 0 - unspecified 139 */ 140 OMX_QCOM_FramePacking_Unspecified, 141 142 /* 1 - Partial frames may be present OMX IL 1.1.1 Figure 2-10: 143 * Case 1??Each Buffer Filled In Whole or In Part 144 */ 145 OMX_QCOM_FramePacking_Arbitrary, 146 147 /* 2 - Multiple complete frames per buffer (integer number) 148 * OMX IL 1.1.1 Figure 2-11: Case 2�Each Buffer Filled with 149 * Only Complete Frames of Data 150 */ 151 OMX_QCOM_FramePacking_CompleteFrames, 152 153 /* 3 - Only one complete frame per buffer, no partial frame 154 * OMX IL 1.1.1 Figure 2-12: Case 3�Each Buffer Filled with 155 * Only One Frame of Compressed Data. Usually at least one 156 * complete unit of data will be delivered in a buffer for 157 * uncompressed data formats. 158 */ 159 OMX_QCOM_FramePacking_OnlyOneCompleteFrame, 160 161 /* 4 - Only one complete subframe per buffer, no partial subframe 162 * Example: In H264, one complete NAL per buffer, where one frame 163 * can contatin multiple NAL 164 */ 165 OMX_QCOM_FramePacking_OnlyOneCompleteSubFrame, 166 167 OMX_QCOM_FramePacking_MAX = 0X7FFFFFFF 168 } OMX_QCOMFramePackingFormat; 169 170 typedef struct OMX_QCOM_PARAM_PORTDEFINITIONTYPE { 171 OMX_U32 nSize; /** Size of the structure in bytes */ 172 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 173 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 174 175 /** Platform specific memory region EBI1, SMI, etc.,*/ 176 OMX_QCOMMemoryRegion nMemRegion; 177 178 OMX_QCOMCacheAttr nCacheAttr; /** Cache attributes */ 179 180 /** Input or output buffer format */ 181 OMX_U32 nFramePackingFormat; 182 183 } OMX_QCOM_PARAM_PORTDEFINITIONTYPE; 184 185 typedef struct OMX_QCOM_VIDEO_PARAM_QPRANGETYPE { 186 OMX_U32 nSize; 187 OMX_VERSIONTYPE nVersion; 188 OMX_U32 nPortIndex; 189 OMX_U32 minQP; 190 OMX_U32 maxQP; 191 } OMX_QCOM_VIDEO_PARAM_QPRANGETYPE; 192 193 #define OMX_QCOM_PLATFORMPVT_EXTN "OMX.QCOM.index.param.platformprivate" 194 /** Allowed APIs on the above Index: OMX_SetParameter() */ 195 196 typedef enum OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE 197 { 198 /** Enum for PMEM information */ 199 OMX_QCOM_PLATFORM_PRIVATE_PMEM = 0x1 200 } OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE; 201 202 /** IL client will set the following structure. A failure 203 * code will be returned if component does not support the 204 * value provided for 'type'. 205 */ 206 struct OMX_QCOM_PLATFORMPRIVATE_EXTN 207 { 208 OMX_U32 nSize; /** Size of the structure in bytes */ 209 OMX_VERSIONTYPE nVersion; /** OMX spec version information */ 210 OMX_U32 nPortIndex; /** Port number on which usebuffer extn is applied */ 211 212 /** Type of extensions should match an entry from 213 OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE 214 */ 215 OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type; 216 }; 217 218 typedef struct OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO 219 { 220 /** pmem file descriptor */ 221 unsigned long pmem_fd; 222 /** Offset from pmem device base address */ 223 OMX_U32 offset; 224 OMX_U32 size; 225 OMX_U32 mapped_size; 226 OMX_PTR buffer; 227 }OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO; 228 229 typedef struct OMX_QCOM_PLATFORM_PRIVATE_ENTRY 230 { 231 /** Entry type */ 232 OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type; 233 234 /** Pointer to platform specific entry */ 235 OMX_PTR entry; 236 }OMX_QCOM_PLATFORM_PRIVATE_ENTRY; 237 238 typedef struct OMX_QCOM_PLATFORM_PRIVATE_LIST 239 { 240 /** Number of entries */ 241 OMX_U32 nEntries; 242 243 /** Pointer to array of platform specific entries * 244 * Contiguous block of OMX_QCOM_PLATFORM_PRIVATE_ENTRY element 245 */ 246 OMX_QCOM_PLATFORM_PRIVATE_ENTRY* entryList; 247 }OMX_QCOM_PLATFORM_PRIVATE_LIST; 248 249 #define OMX_QCOM_FRAME_PACKING_FORMAT "OMX.QCOM.index.param.framepackfmt" 250 /* Allowed API call: OMX_GetParameter() */ 251 /* IL client can use this index to rerieve the list of frame formats * 252 * supported by the component */ 253 254 typedef struct OMX_QCOM_FRAME_PACKINGFORMAT_TYPE { 255 OMX_U32 nSize; 256 OMX_VERSIONTYPE nVersion; 257 OMX_U32 nPortIndex; 258 OMX_U32 nIndex; 259 OMX_QCOMFramePackingFormat eframePackingFormat; 260 } OMX_QCOM_FRAME_PACKINGFORMAT_TYPE; 261 262 263 /** 264 * Following is the enum for color formats supported on Qualcomm 265 * MSMs YVU420SemiPlanar color format is not defined in OpenMAX 266 * 1.1.1 and prior versions of OpenMAX specification. 267 */ 268 269 enum OMX_QCOM_COLOR_FORMATTYPE 270 { 271 272 /** YVU420SemiPlanar: YVU planar format, organized with a first 273 * plane containing Y pixels, and a second plane containing 274 * interleaved V and U pixels. V and U pixels are sub-sampled 275 * by a factor of two both horizontally and vertically. 276 */ 277 QOMX_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, 278 QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka, 279 QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka, 280 QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka, 281 QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m, 282 QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mMultiView, 283 QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mCompressed, 284 QOMX_COLOR_Format32bitRGBA8888, 285 QOMX_COLOR_Format32bitRGBA8888Compressed, 286 QOMX_COLOR_FormatAndroidOpaque = (OMX_COLOR_FORMATTYPE) OMX_COLOR_FormatVendorStartUnused + 0x789, 287 }; 288 289 enum OMX_QCOM_VIDEO_CODINGTYPE 290 { 291 /** Codecs support by qualcomm which are not listed in OMX 1.1.x 292 * spec 293 * */ 294 OMX_QCOM_VIDEO_CodingVC1 = 0x7FA30C00 , 295 OMX_QCOM_VIDEO_CodingWMV9 = 0x7FA30C01, 296 QOMX_VIDEO_CodingDivx = 0x7FA30C02, /**< Value when coding is Divx */ 297 QOMX_VIDEO_CodingSpark = 0x7FA30C03, /**< Value when coding is Sorenson Spark */ 298 QOMX_VIDEO_CodingVp = 0x7FA30C04, 299 QOMX_VIDEO_CodingVp8 = OMX_VIDEO_CodingVP8, /**< keeping old enum for backwards compatibility*/ 300 QOMX_VIDEO_CodingHevc = OMX_VIDEO_CodingHEVC, /**< keeping old enum for backwards compatibility*/ 301 QOMX_VIDEO_CodingMVC = 0x7FA30C07, 302 QOMX_VIDEO_CodingVp9 = OMX_VIDEO_CodingVP9, /**< keeping old enum for backwards compatibility*/ 303 }; 304 305 enum OMX_QCOM_EXTN_INDEXTYPE 306 { 307 /** Qcom proprietary extension index list */ 308 309 /* "OMX.QCOM.index.param.register_mmap" */ 310 OMX_QcomIndexRegmmap = 0x7F000000, 311 312 /* "OMX.QCOM.index.param.platformprivate" */ 313 OMX_QcomIndexPlatformPvt = 0x7F000001, 314 315 /* "OMX.QCOM.index.param.portdefn" */ 316 OMX_QcomIndexPortDefn = 0x7F000002, 317 318 /* "OMX.QCOM.index.param.framepackingformat" */ 319 OMX_QcomIndexPortFramePackFmt = 0x7F000003, 320 321 /*"OMX.QCOM.index.param.Interlaced */ 322 OMX_QcomIndexParamInterlaced = 0x7F000004, 323 324 /*"OMX.QCOM.index.config.interlaceformat */ 325 OMX_QcomIndexConfigInterlaced = 0x7F000005, 326 327 /*"OMX.QCOM.index.param.syntaxhdr" */ 328 QOMX_IndexParamVideoSyntaxHdr = 0x7F000006, 329 330 /*"OMX.QCOM.index.config.intraperiod" */ 331 QOMX_IndexConfigVideoIntraperiod = 0x7F000007, 332 333 /*"OMX.QCOM.index.config.randomIntrarefresh" */ 334 QOMX_IndexConfigVideoIntraRefresh = 0x7F000008, 335 336 /*"OMX.QCOM.index.config.video.TemporalSpatialTradeOff" */ 337 QOMX_IndexConfigVideoTemporalSpatialTradeOff = 0x7F000009, 338 339 /*"OMX.QCOM.index.param.video.EncoderMode" */ 340 QOMX_IndexParamVideoEncoderMode = 0x7F00000A, 341 342 /*"OMX.QCOM.index.param.Divxtype */ 343 OMX_QcomIndexParamVideoDivx = 0x7F00000B, 344 345 /*"OMX.QCOM.index.param.Sparktype */ 346 OMX_QcomIndexParamVideoSpark = 0x7F00000C, 347 348 /*"OMX.QCOM.index.param.Vptype */ 349 OMX_QcomIndexParamVideoVp = 0x7F00000D, 350 351 OMX_QcomIndexQueryNumberOfVideoDecInstance = 0x7F00000E, 352 353 OMX_QcomIndexParamVideoSyncFrameDecodingMode = 0x7F00000F, 354 355 OMX_QcomIndexParamVideoDecoderPictureOrder = 0x7F000010, 356 357 /* "OMX.QCOM.index.config.video.FramePackingInfo" */ 358 OMX_QcomIndexConfigVideoFramePackingArrangement = 0x7F000011, 359 360 OMX_QcomIndexParamConcealMBMapExtraData = 0x7F000012, 361 362 OMX_QcomIndexParamFrameInfoExtraData = 0x7F000013, 363 364 OMX_QcomIndexParamInterlaceExtraData = 0x7F000014, 365 366 OMX_QcomIndexParamH264TimeInfo = 0x7F000015, 367 368 OMX_QcomIndexParamIndexExtraDataType = 0x7F000016, 369 370 OMX_GoogleAndroidIndexEnableAndroidNativeBuffers = 0x7F000017, 371 372 OMX_GoogleAndroidIndexUseAndroidNativeBuffer = 0x7F000018, 373 374 OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage = 0x7F000019, 375 376 /*"OMX.QCOM.index.config.video.QPRange" */ 377 OMX_QcomIndexConfigVideoQPRange = 0x7F00001A, 378 379 /*"OMX.QCOM.index.param.EnableTimeStampReoder"*/ 380 OMX_QcomIndexParamEnableTimeStampReorder = 0x7F00001B, 381 382 /*"OMX.google.android.index.storeMetaDataInBuffers"*/ 383 OMX_QcomIndexParamVideoMetaBufferMode = 0x7F00001C, 384 385 /*"OMX.google.android.index.useAndroidNativeBuffer2"*/ 386 OMX_GoogleAndroidIndexUseAndroidNativeBuffer2 = 0x7F00001D, 387 388 /*"OMX.QCOM.index.param.VideoMaxAllowedBitrateCheck"*/ 389 OMX_QcomIndexParamVideoMaxAllowedBitrateCheck = 0x7F00001E, 390 391 OMX_QcomIndexEnableSliceDeliveryMode = 0x7F00001F, 392 393 /* "OMX.QCOM.index.param.video.ExtnUserExtraData" */ 394 OMX_QcomIndexEnableExtnUserData = 0x7F000020, 395 396 /*"OMX.QCOM.index.param.video.EnableSmoothStreaming"*/ 397 OMX_QcomIndexParamEnableSmoothStreaming = 0x7F000021, 398 399 /*"OMX.QCOM.index.param.video.QPRange" */ 400 OMX_QcomIndexParamVideoQPRange = 0x7F000022, 401 402 OMX_QcomIndexEnableH263PlusPType = 0x7F000023, 403 404 /*"OMX.QCOM.index.param.video.LTRCountRangeSupported"*/ 405 QOMX_IndexParamVideoLTRCountRangeSupported = 0x7F000024, 406 407 /*"OMX.QCOM.index.param.video.LTRMode"*/ 408 QOMX_IndexParamVideoLTRMode = 0x7F000025, 409 410 /*"OMX.QCOM.index.param.video.LTRCount"*/ 411 QOMX_IndexParamVideoLTRCount = 0x7F000026, 412 413 /*"OMX.QCOM.index.config.video.LTRPeriod"*/ 414 QOMX_IndexConfigVideoLTRPeriod = 0x7F000027, 415 416 /*"OMX.QCOM.index.config.video.LTRUse"*/ 417 QOMX_IndexConfigVideoLTRUse = 0x7F000028, 418 419 /*"OMX.QCOM.index.config.video.LTRMark"*/ 420 QOMX_IndexConfigVideoLTRMark = 0x7F000029, 421 422 /* OMX.google.android.index.prependSPSPPSToIDRFrames */ 423 OMX_QcomIndexParamSequenceHeaderWithIDR = 0x7F00002A, 424 425 OMX_QcomIndexParamH264AUDelimiter = 0x7F00002B, 426 427 OMX_QcomIndexParamVideoDownScalar = 0x7F00002C, 428 429 /* "OMX.QCOM.index.param.video.FramePackingExtradata" */ 430 OMX_QcomIndexParamVideoFramePackingExtradata = 0x7F00002D, 431 432 /* "OMX.QCOM.index.config.activeregiondetection" */ 433 OMX_QcomIndexConfigActiveRegionDetection = 0x7F00002E, 434 435 /* "OMX.QCOM.index.config.activeregiondetectionstatus" */ 436 OMX_QcomIndexConfigActiveRegionDetectionStatus = 0x7F00002F, 437 438 /* "OMX.QCOM.index.config.scalingmode" */ 439 OMX_QcomIndexConfigScalingMode = 0x7F000030, 440 441 /* "OMX.QCOM.index.config.noisereduction" */ 442 OMX_QcomIndexConfigNoiseReduction = 0x7F000031, 443 444 /* "OMX.QCOM.index.config.imageenhancement" */ 445 OMX_QcomIndexConfigImageEnhancement = 0x7F000032, 446 447 /* google smooth-streaming support */ 448 OMX_QcomIndexParamVideoAdaptivePlaybackMode = 0x7F000033, 449 450 /* H.264 MVC codec index */ 451 QOMX_IndexParamVideoMvc = 0x7F000034, 452 453 /* "OMX.QCOM.index.param.video.QPExtradata" */ 454 OMX_QcomIndexParamVideoQPExtraData = 0x7F000035, 455 456 /* "OMX.QCOM.index.param.video.InputBitsInfoExtradata" */ 457 OMX_QcomIndexParamVideoInputBitsInfoExtraData = 0x7F000036, 458 459 /* VP8 Hierarchical P support */ 460 OMX_QcomIndexHierarchicalStructure = 0x7F000037, 461 462 OMX_QcomIndexParamPerfLevel = 0x7F000038, 463 464 OMX_QcomIndexParamH264VUITimingInfo = 0x7F000039, 465 466 OMX_QcomIndexParamPeakBitrate = 0x7F00003A, 467 468 /* Enable InitialQP index */ 469 QOMX_IndexParamVideoInitialQp = 0x7F00003B, 470 471 OMX_QcomIndexParamSetMVSearchrange = 0x7F00003C, 472 473 OMX_QcomIndexConfigPerfLevel = 0x7F00003D, 474 475 /*"OMX.QCOM.index.param.video.LTRCount"*/ 476 OMX_QcomIndexParamVideoLTRCount = QOMX_IndexParamVideoLTRCount, 477 478 /*"OMX.QCOM.index.config.video.LTRUse"*/ 479 OMX_QcomIndexConfigVideoLTRUse = QOMX_IndexConfigVideoLTRUse, 480 481 /*"OMX.QCOM.index.config.video.LTRMark"*/ 482 OMX_QcomIndexConfigVideoLTRMark = QOMX_IndexConfigVideoLTRMark, 483 484 /*"OMX.QCOM.index.param.video.CustomBufferSize"*/ 485 OMX_QcomIndexParamVideoCustomBufferSize = 0x7F00003E, 486 487 /* Max Hierarchical P layers */ 488 OMX_QcomIndexMaxHierarchicallayers = 0x7F000041, 489 490 /* Set Encoder Performance Index */ 491 OMX_QcomIndexConfigVideoVencPerfMode = 0x7F000042, 492 493 /* Set Hybrid Hier-p layers */ 494 OMX_QcomIndexParamVideoHybridHierpMode = 0x7F000043, 495 496 OMX_QcomIndexFlexibleYUVDescription = 0x7F000044, 497 498 /* Vpp Hqv Control Type */ 499 OMX_QcomIndexParamVppHqvControl = 0x7F000045, 500 501 /* Enable VPP */ 502 OMX_QcomIndexParamEnableVpp = 0x7F000046, 503 504 /* MBI statistics mode */ 505 OMX_QcomIndexParamMBIStatisticsMode = 0x7F000047, 506 507 /* Set PictureTypeDecode */ 508 OMX_QcomIndexConfigPictureTypeDecode = 0x7F000048, 509 510 OMX_QcomIndexConfigH264EntropyCodingCabac = 0x7F000049, 511 512 /* "OMX.QCOM.index.param.video.InputBatch" */ 513 OMX_QcomIndexParamBatchSize = 0x7F00004A, 514 515 OMX_QcomIndexConfigMaxHierPLayers = 0x7F00004B, 516 517 OMX_QcomIndexConfigRectType = 0x7F00004C, 518 519 OMX_QcomIndexConfigBaseLayerId = 0x7F00004E, 520 521 OMX_QcomIndexParamDriverVersion = 0x7F00004F, 522 523 OMX_QcomIndexConfigQp = 0x7F000050, 524 525 OMX_QcomIndexParamVencAspectRatio = 0x7F000051, 526 527 OMX_QTIIndexParamVQZipSEIExtraData = 0x7F000052, 528 529 /* Enable VQZIP SEI NAL type */ 530 OMX_QTIIndexParamVQZIPSEIType = 0x7F000053, 531 532 OMX_QTIIndexParamPassInputBufferFd = 0x7F000054, 533 534 /* Set Prefer-adaptive playback*/ 535 /* "OMX.QTI.index.param.video.PreferAdaptivePlayback" */ 536 OMX_QTIIndexParamVideoPreferAdaptivePlayback = 0x7F000055, 537 538 /* Set time params */ 539 OMX_QTIIndexConfigSetTimeData = 0x7F000056, 540 /* Force Compressed format for DPB when resolution <=1080p 541 * and OPB is cpu_access */ 542 /* OMX.QTI.index.param.video.ForceCompressedForDPB */ 543 OMX_QTIIndexParamForceCompressedForDPB = 0x7F000057, 544 545 /* Enable ROI info */ 546 OMX_QTIIndexParamVideoEnableRoiInfo = 0x7F000058, 547 548 /* Configure ROI info */ 549 OMX_QTIIndexConfigVideoRoiInfo = 0x7F000059, 550 551 /* Force OPB to UnCompressed mode */ 552 OMX_QTIIndexParamForceUnCompressedForOPB = 0x7F00005A, 553 }; 554 555 /** 556 * This is custom extension to configure Encoder Aspect Ratio. 557 * 558 * STRUCT MEMBERS 559 * 560 * nSize : Size of Structure in bytes 561 * nVersion : OpenMAX IL specification version information 562 * nSARWidth : Horizontal aspect size 563 * nSARHeight : Vertical aspect size 564 */ 565 566 typedef struct QOMX_EXTNINDEX_VIDEO_VENC_SAR 567 { 568 OMX_U32 nSize; 569 OMX_U32 nVersion; 570 OMX_U32 nSARWidth; 571 OMX_U32 nSARHeight; 572 } QOMX_EXTNINDEX_VIDEO_VENC_SAR; 573 574 /** 575 * This is custom extension to configure Hier-p layers. 576 * This mode configures Hier-p layers dynamically. 577 * 578 * STRUCT MEMBERS 579 * 580 * nSize : Size of Structure in bytes 581 * nVersion : OpenMAX IL specification version information 582 * nMaxHierLayers: Set the max number of Hier-p layers for the session 583 * - This should be less than the Hier-P layers set 584 * for the session. 585 */ 586 587 typedef struct QOMX_EXTNINDEX_VIDEO_MAX_HIER_P_LAYERS { 588 OMX_U32 nSize; 589 OMX_VERSIONTYPE nVersion; 590 OMX_U32 nMaxHierLayers; 591 } QOMX_EXTNINDEX_VIDEO_MAX_HIER_P_LAYERS; 592 593 594 /** 595 * This is custom extension to configure Hybrid Hier-p settings. 596 * This mode is different from enabling Hier-p mode. This 597 * property enables Hier-p encoding with LTR referencing in each 598 * sub-GOP. 599 * 600 * STRUCT MEMBERS 601 * 602 * nSize : Size of Structure in bytes 603 * nVersion : OpenMAX IL specification version information 604 * nKeyFrameInterval : Indicates the I frame interval 605 * nHpLayers : Set the number of Hier-p layers for the session 606 * - This should be <= 6. (1 Base layer + 607 * 5 Enhancement layers) 608 * nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS] : Bitrate to 609 * be set for each enhancement layer 610 * nMinQuantizer : minimum session QP 611 * nMaxQuantizer : Maximun session QP 612 */ 613 614 typedef struct QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE { 615 OMX_U32 nSize; 616 OMX_VERSIONTYPE nVersion; 617 OMX_U32 nKeyFrameInterval; 618 OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS]; 619 OMX_U32 nMinQuantizer; 620 OMX_U32 nMaxQuantizer; 621 OMX_U32 nHpLayers; 622 } QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE; 623 624 /** 625 * Encoder Performance Mode. This structure is used to set 626 * performance mode or power save mode when encoding. The search 627 * range is modified to save power or improve quality. 628 * 629 * STRUCT MEMBERS: 630 * OMX_U32 nPerfMode : Performance mode: 631 * 1: MAX_QUALITY 632 * 2: POWER_SAVE 633 */ 634 635 typedef struct QOMX_EXTNINDEX_VIDEO_PERFMODE { 636 OMX_U32 nSize; 637 OMX_VERSIONTYPE nVersion; 638 OMX_U32 nPerfMode; 639 } QOMX_EXTNINDEX_VIDEO_PERFMODE; 640 641 /** 642 * Initial QP parameter. This structure is used to enable 643 * vendor specific extension to let client enable setting 644 * initial QP values to I P B Frames 645 * 646 * STRUCT MEMBERS: 647 * nSize : Size of Structure in bytes 648 * nVersion : OpenMAX IL specification version information 649 * nPortIndex : Index of the port to which this structure applies 650 * OMX_U32 nQpI : First Iframe QP 651 * OMX_U32 nQpP : First Pframe QP 652 * OMX_U32 nQpB : First Bframe QP 653 * OMX_U32 bEnableInitQp : Bit field indicating which frame type(s) shall 654 * use the specified initial QP. 655 * Bit 0: Enable initial QP for I/IDR 656 * and use value specified in nInitQpI 657 * Bit 1: Enable initial QP for P 658 * and use value specified in nInitQpP 659 * Bit 2: Enable initial QP for B 660 * and use value specified in nInitQpB 661 */ 662 663 typedef struct QOMX_EXTNINDEX_VIDEO_INITIALQP { 664 OMX_U32 nSize; 665 OMX_VERSIONTYPE nVersion; 666 OMX_U32 nPortIndex; 667 OMX_U32 nQpI; 668 OMX_U32 nQpP; 669 OMX_U32 nQpB; 670 OMX_U32 bEnableInitQp; 671 } QOMX_EXTNINDEX_VIDEO_INITIALQP; 672 673 /** 674 * Extension index parameter. This structure is used to enable 675 * vendor specific extension on input/output port and 676 * to pass the required flags and data, if any. 677 * The format of flags and data being passed is known to 678 * the client and component apriori. 679 * 680 * STRUCT MEMBERS: 681 * nSize : Size of Structure plus pData size 682 * nVersion : OMX specification version information 683 * nPortIndex : Indicates which port to set 684 * bEnable : Extension index enable (1) or disable (0) 685 * nFlags : Extension index flags, if any 686 * nDataSize : Size of the extension index data to follow 687 * pData : Extension index data, if present. 688 */ 689 typedef struct QOMX_EXTNINDEX_PARAMTYPE { 690 OMX_U32 nSize; 691 OMX_VERSIONTYPE nVersion; 692 OMX_U32 nPortIndex; 693 OMX_BOOL bEnable; 694 OMX_U32 nFlags; 695 OMX_U32 nDataSize; 696 OMX_PTR pData; 697 } QOMX_EXTNINDEX_PARAMTYPE; 698 699 /** 700 * Range index parameter. This structure is used to enable 701 * vendor specific extension on input/output port and 702 * to pass the required minimum and maximum values 703 * 704 * STRUCT MEMBERS: 705 * nSize : Size of Structure in bytes 706 * nVersion : OpenMAX IL specification version information 707 * nPortIndex : Index of the port to which this structure applies 708 * nMin : Minimum value 709 * nMax : Maximum value 710 * nSteSize : Step size 711 */ 712 typedef struct QOMX_EXTNINDEX_RANGETYPE { 713 OMX_U32 nSize; 714 OMX_VERSIONTYPE nVersion; 715 OMX_U32 nPortIndex; 716 OMX_S32 nMin; 717 OMX_S32 nMax; 718 OMX_S32 nStepSize; 719 } QOMX_EXTNINDEX_RANGETYPE; 720 721 /** 722 * Specifies LTR mode types. 723 */ 724 typedef enum QOMX_VIDEO_LTRMODETYPE 725 { 726 QOMX_VIDEO_LTRMode_Disable = 0x0, /**< LTR encoding is disabled */ 727 QOMX_VIDEO_LTRMode_Manual = 0x1, /**< In this mode, IL client configures 728 ** the encoder the LTR count and manually 729 ** controls the marking and use of LTR 730 ** frames during video encoding. 731 */ 732 QOMX_VIDEO_LTRMode_Auto = 0x2, /**< In this mode, IL client configures 733 ** the encoder the LTR count and LTR 734 ** period. The encoder marks LTR frames 735 ** automatically based on the LTR period 736 ** during video encoding. IL client controls 737 ** the use of LTR frames. 738 */ 739 QOMX_VIDEO_LTRMode_MAX = 0x7FFFFFFF /** Maximum LTR Mode type */ 740 } QOMX_VIDEO_LTRMODETYPE; 741 742 /** 743 * LTR mode index parameter. This structure is used 744 * to enable vendor specific extension on output port 745 * to pass the LTR mode information. 746 * 747 * STRUCT MEMBERS: 748 * nSize : Size of Structure in bytes 749 * nVersion : OpenMAX IL specification version information 750 * nPortIndex : Index of the port to which this structure applies 751 * eLTRMode : Specifies the LTR mode used in encoder 752 */ 753 typedef struct QOMX_VIDEO_PARAM_LTRMODE_TYPE { 754 OMX_U32 nSize; 755 OMX_VERSIONTYPE nVersion; 756 OMX_U32 nPortIndex; 757 QOMX_VIDEO_LTRMODETYPE eLTRMode; 758 } QOMX_VIDEO_PARAM_LTRMODE_TYPE; 759 760 /** 761 * LTR count index parameter. This structure is used 762 * to enable vendor specific extension on output port 763 * to pass the LTR count information. 764 * 765 * STRUCT MEMBERS: 766 * nSize : Size of Structure in bytes 767 * nVersion : OpenMAX IL specification version information 768 * nPortIndex : Index of the port to which this structure applies 769 * nCount : Specifies the number of LTR frames stored in the 770 * encoder component 771 */ 772 typedef struct QOMX_VIDEO_PARAM_LTRCOUNT_TYPE { 773 OMX_U32 nSize; 774 OMX_VERSIONTYPE nVersion; 775 OMX_U32 nPortIndex; 776 OMX_U32 nCount; 777 } QOMX_VIDEO_PARAM_LTRCOUNT_TYPE; 778 779 780 /** 781 * This should be used with OMX_QcomIndexParamVideoLTRCount extension. 782 */ 783 typedef QOMX_VIDEO_PARAM_LTRCOUNT_TYPE OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE; 784 785 /** 786 * LTR period index parameter. This structure is used 787 * to enable vendor specific extension on output port 788 * to pass the LTR period information. 789 * 790 * STRUCT MEMBERS: 791 * nSize : Size of Structure in bytes 792 * nVersion : OpenMAX IL specification version information 793 * nPortIndex : Index of the port to which this structure applies 794 * nFrames : Specifies the number of frames between two consecutive 795 * LTR frames. 796 */ 797 typedef struct QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE { 798 OMX_U32 nSize; 799 OMX_VERSIONTYPE nVersion; 800 OMX_U32 nPortIndex; 801 OMX_U32 nFrames; 802 } QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE; 803 804 /** 805 * Marks the next encoded frame as an LTR frame. 806 * STRUCT MEMBERS: 807 * nSize : Size of Structure in bytes 808 * nVersion : OpenMAX IL specification version information 809 * nPortIndex : Index of the port to which this structure applies 810 * nID : Specifies the identifier of the LTR frame to be marked 811 * as reference frame for encoding subsequent frames. 812 */ 813 typedef struct QOMX_VIDEO_CONFIG_LTRMARK_TYPE { 814 OMX_U32 nSize; 815 OMX_VERSIONTYPE nVersion; 816 OMX_U32 nPortIndex; 817 OMX_U32 nID; 818 } QOMX_VIDEO_CONFIG_LTRMARK_TYPE; 819 820 /** 821 * This should be used with OMX_QcomIndexConfigVideoLTRMark extension. 822 */ 823 typedef QOMX_VIDEO_CONFIG_LTRMARK_TYPE OMX_QCOM_VIDEO_CONFIG_LTRMARK_TYPE; 824 825 /** 826 * Specifies an LTR frame to encode subsequent frames. 827 * STRUCT MEMBERS: 828 * nSize : Size of Structure in bytes 829 * nVersion : OpenMAX IL specification version information 830 * nPortIndex : Index of the port to which this structure applies 831 * nID : Specifies the identifier of the LTR frame to be used 832 as reference frame for encoding subsequent frames. 833 * nFrames : Specifies the number of subsequent frames to be 834 encoded using the LTR frame with its identifier 835 nID as reference frame. Short-term reference frames 836 will be used thereafter. The value of 0xFFFFFFFF 837 indicates that all subsequent frames will be 838 encodedusing this LTR frame as reference frame. 839 */ 840 typedef struct QOMX_VIDEO_CONFIG_LTRUSE_TYPE { 841 OMX_U32 nSize; 842 OMX_VERSIONTYPE nVersion; 843 OMX_U32 nPortIndex; 844 OMX_U32 nID; 845 OMX_U32 nFrames; 846 } QOMX_VIDEO_CONFIG_LTRUSE_TYPE; 847 848 /** 849 * This should be used with OMX_QcomIndexConfigVideoLTRUse extension. 850 */ 851 typedef QOMX_VIDEO_CONFIG_LTRUSE_TYPE OMX_QCOM_VIDEO_CONFIG_LTRUSE_TYPE; 852 853 /** 854 * Enumeration used to define the video encoder modes 855 * 856 * ENUMS: 857 * EncoderModeDefault : Default video recording mode. 858 * All encoder settings made through 859 * OMX_SetParameter/OMX_SetConfig are applied. No 860 * parameter is overridden. 861 * EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging 862 * Service). This mode is similar to EncoderModeDefault 863 * except that here the Rate control mode is overridden 864 * internally and set as a variant of variable bitrate with 865 * variable frame rate. After this mode is set if the IL 866 * client tries to set OMX_VIDEO_CONTROLRATETYPE via 867 * OMX_IndexParamVideoBitrate that would be rejected. For 868 * this, client should set mode back to EncoderModeDefault 869 * first and then change OMX_VIDEO_CONTROLRATETYPE. 870 */ 871 typedef enum QOMX_VIDEO_ENCODERMODETYPE 872 { 873 QOMX_VIDEO_EncoderModeDefault = 0x00, 874 QOMX_VIDEO_EncoderModeMMS = 0x01, 875 QOMX_VIDEO_EncoderModeMax = 0x7FFFFFFF 876 } QOMX_VIDEO_ENCODERMODETYPE; 877 878 /** 879 * This structure is used to set the video encoder mode. 880 * 881 * STRUCT MEMBERS: 882 * nSize : Size of the structure in bytes 883 * nVersion : OMX specification version info 884 * nPortIndex : Port that this structure applies to 885 * nMode : defines the video encoder mode 886 */ 887 typedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE { 888 OMX_U32 nSize; 889 OMX_VERSIONTYPE nVersion; 890 OMX_U32 nPortIndex; 891 QOMX_VIDEO_ENCODERMODETYPE nMode; 892 } QOMX_VIDEO_PARAM_ENCODERMODETYPE; 893 894 /** 895 * This structure describes the parameters corresponding to the 896 * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried 897 * during the loaded state. 898 */ 899 900 typedef struct QOMX_VIDEO_SYNTAXHDRTYPE 901 { 902 OMX_U32 nSize; /** Size of the structure in bytes */ 903 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 904 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 905 OMX_U32 nBytes; /** The number of bytes filled in to the buffer */ 906 OMX_U8 data[1]; /** Buffer to store the header information */ 907 } QOMX_VIDEO_SYNTAXHDRTYPE; 908 909 /** 910 * This structure describes the parameters corresponding to the 911 * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set 912 * dynamically during any state except the state invalid. This is primarily 913 * used for setting MaxQP from the application. This is set on the out port. 914 */ 915 916 typedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE 917 { 918 OMX_U32 nSize; /** Size of the structure in bytes */ 919 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 920 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 921 OMX_U32 nTSFactor; /** Temoral spatial tradeoff factor value in 0-100 */ 922 } QOMX_VIDEO_TEMPORALSPATIALTYPE; 923 924 /** 925 * This structure describes the parameters corresponding to the 926 * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set 927 * dynamically during any state except the state invalid. This is set on the out port. 928 */ 929 930 typedef struct QOMX_VIDEO_INTRAPERIODTYPE 931 { 932 OMX_U32 nSize; /** Size of the structure in bytes */ 933 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 934 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 935 OMX_U32 nIDRPeriod; /** This specifies coding a frame as IDR after every nPFrames 936 of intra frames. If this parameter is set to 0, only the 937 first frame of the encode session is an IDR frame. This 938 field is ignored for non-AVC codecs and is used only for 939 codecs that support IDR Period */ 940 OMX_U32 nPFrames; /** The number of "P" frames between two "I" frames */ 941 OMX_U32 nBFrames; /** The number of "B" frames between two "I" frames */ 942 } QOMX_VIDEO_INTRAPERIODTYPE; 943 944 /** 945 * This structure describes the parameters corresponding to the 946 * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set 947 * dynamically during any state except the state invalid. This is used for the buffer negotiation 948 * with other clients. This is set on the out port. 949 */ 950 typedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE 951 { 952 OMX_U32 nSize; /** Size of the structure in bytes */ 953 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 954 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 955 OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */ 956 } OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE; 957 958 /** 959 * This structure describes the parameters corresponding to the 960 * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set 961 * dynamically during any state except the state invalid. This is primarily used for the dynamic/random 962 * intrarefresh. This is set on the out port. 963 */ 964 typedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE 965 { 966 OMX_U32 nSize; /** Size of the structure in bytes */ 967 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 968 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 969 OMX_U32 nRirMBs; /** The number of MBs to be set for intrarefresh */ 970 } OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE; 971 972 973 /** 974 * This structure describes the parameters corresponding to the 975 * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set 976 * dynamically during any state except the state invalid. This is primarily 977 * used for the min/max QP to be set from the application. This 978 * is set on the out port. 979 */ 980 typedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE 981 { 982 OMX_U32 nSize; /** Size of the structure in bytes */ 983 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 984 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 985 OMX_U32 nMinQP; /** The number for minimum quantization parameter */ 986 OMX_U32 nMaxQP; /** The number for maximum quantization parameter */ 987 } OMX_QCOM_VIDEO_CONFIG_QPRANGE; 988 989 /** 990 * This structure describes the parameters for the 991 * OMX_QcomIndexParamH264AUDelimiter extension. It enables/disables 992 * the AU delimiters in the H264 stream, which is used by WFD. 993 */ 994 typedef struct OMX_QCOM_VIDEO_CONFIG_H264_AUD 995 { 996 OMX_U32 nSize; /** Size of the structure in bytes */ 997 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 998 OMX_BOOL bEnable; /** Enable/disable the setting */ 999 } OMX_QCOM_VIDEO_CONFIG_H264_AUD; 1000 1001 typedef enum QOMX_VIDEO_PERF_LEVEL 1002 { 1003 OMX_QCOM_PerfLevelNominal, 1004 OMX_QCOM_PerfLevelTurbo 1005 } QOMX_VIDEO_PERF_LEVEL; 1006 1007 /** 1008 * This structure describes the parameters corresponding 1009 * to OMX_QcomIndexParamPerfLevel extension. It will set 1010 * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. 1011 */ 1012 typedef struct OMX_QCOM_VIDEO_PARAM_PERF_LEVEL { 1013 OMX_U32 nSize; /** Size of the structure in bytes */ 1014 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1015 QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ 1016 } OMX_QCOM_VIDEO_PARAM_PERF_LEVEL; 1017 1018 /** 1019 * This structure describes the parameters corresponding 1020 * to OMX_QcomIndexConfigPerfLevel extension. It will set 1021 * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. 1022 */ 1023 typedef struct OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL { 1024 OMX_U32 nSize; /** Size of the structure in bytes */ 1025 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1026 QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ 1027 } OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL; 1028 1029 typedef enum QOMX_VIDEO_PICTURE_TYPE_DECODE 1030 { 1031 OMX_QCOM_PictypeDecode_IPB, 1032 OMX_QCOM_PictypeDecode_I 1033 } QOMX_VIDEO_PICTURE_TYPE_DECODE; 1034 1035 /** 1036 * This structure describes the parameters corresponding 1037 * to OMX_QcomIndexConfigPictureTypeDecode extension. It 1038 * will set the picture type decode specified by eDecodeType. 1039 */ 1040 typedef struct OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE { 1041 OMX_U32 nSize; /** Size of the structure in bytes */ 1042 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1043 QOMX_VIDEO_PICTURE_TYPE_DECODE eDecodeType; /** Decode type */ 1044 } OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE; 1045 1046 /** 1047 * This structure describes the parameters corresponding 1048 * to OMX_QcomIndexParamH264VUITimingInfo extension. It 1049 * will enable/disable the VUI timing info. 1050 */ 1051 typedef struct OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO { 1052 OMX_U32 nSize; /** Size of the structure in bytes */ 1053 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1054 OMX_BOOL bEnable; /** Enable/disable the setting */ 1055 } OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO; 1056 1057 /** 1058 * This structure describes the parameters corresponding 1059 * to OMX_QcomIndexParamVQZIPSEIType extension. It 1060 * will enable/disable the VQZIP SEI info. 1061 */ 1062 typedef struct OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE { 1063 OMX_U32 nSize; /** Size of the structure in bytes */ 1064 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1065 OMX_BOOL bEnable; /** Enable/disable the setting */ 1066 } OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE; 1067 1068 /** 1069 * This structure describes the parameters corresponding 1070 * to OMX_QcomIndexParamPeakBitrate extension. It will 1071 * set the peak bitrate specified by nPeakBitrate. 1072 */ 1073 typedef struct OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE { 1074 OMX_U32 nSize; /** Size of the structure in bytes */ 1075 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1076 OMX_U32 nPeakBitrate; /** Peak bitrate value */ 1077 } OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE; 1078 1079 /** 1080 * This structure describes the parameters corresponding 1081 * to OMX_QTIIndexParamForceCompressedForDPB extension. Enabling 1082 * this extension will force the split mode DPB(compressed)/OPB(Linear) 1083 * for all resolutions.On some chipsets preferred mode would be combined 1084 * Linear for both DPB/OPB to save memory. For example on 8996 preferred mode 1085 * would be combined linear for resolutions <= 1080p . 1086 * Enabling this might save power but with the cost 1087 * of increased memory i.e almost double the number on output YUV buffers. 1088 */ 1089 typedef struct OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE { 1090 OMX_U32 nSize; /** Size of the structure in bytes */ 1091 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1092 OMX_BOOL bEnable; /** Enable/disable the setting */ 1093 } OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE; 1094 1095 /** 1096 * This structure describes the parameters corresponding 1097 * to OMX_QTIIndexParamForceUnCompressedForOPB extension. Enabling this 1098 * extension will force the OPB to be linear for the current video session. 1099 * If this property is not set, then the OPB will be set to linear or compressed 1100 * based on resolution selected and/or if cpu access is requested on the 1101 * OPB buffer. 1102 */ 1103 typedef struct OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE { 1104 OMX_U32 nSize; /** Sizeo f the structure in bytes */ 1105 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1106 OMX_BOOL bEnable; /** Enable/disable the setting */ 1107 } OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE; 1108 1109 typedef struct OMX_VENDOR_EXTRADATATYPE { 1110 OMX_U32 nPortIndex; 1111 OMX_U32 nDataSize; 1112 OMX_U8 *pData; // cdata (codec_data/extradata) 1113 } OMX_VENDOR_EXTRADATATYPE; 1114 1115 /** 1116 * This structure describes the parameters corresponding to the 1117 * OMX_VENDOR_VIDEOFRAMERATE extension. This parameter can be set 1118 * dynamically during any state except the state invalid. This is 1119 * used for frame rate to be set from the application. This 1120 * is set on the in port. 1121 */ 1122 typedef struct OMX_VENDOR_VIDEOFRAMERATE { 1123 OMX_U32 nSize; /** Size of the structure in bytes */ 1124 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 1125 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 1126 OMX_U32 nFps; /** Frame rate value */ 1127 OMX_BOOL bEnabled; /** Flag to enable or disable client's frame rate value */ 1128 } OMX_VENDOR_VIDEOFRAMERATE; 1129 1130 typedef enum OMX_INDEXVENDORTYPE { 1131 OMX_IndexVendorFileReadInputFilename = 0xFF000001, 1132 OMX_IndexVendorParser3gpInputFilename = 0xFF000002, 1133 OMX_IndexVendorVideoExtraData = 0xFF000003, 1134 OMX_IndexVendorAudioExtraData = 0xFF000004, 1135 OMX_IndexVendorVideoFrameRate = 0xFF000005, 1136 } OMX_INDEXVENDORTYPE; 1137 1138 typedef enum OMX_QCOM_VC1RESOLUTIONTYPE 1139 { 1140 OMX_QCOM_VC1_PICTURE_RES_1x1, 1141 OMX_QCOM_VC1_PICTURE_RES_2x1, 1142 OMX_QCOM_VC1_PICTURE_RES_1x2, 1143 OMX_QCOM_VC1_PICTURE_RES_2x2 1144 } OMX_QCOM_VC1RESOLUTIONTYPE; 1145 1146 typedef enum OMX_QCOM_INTERLACETYPE 1147 { 1148 OMX_QCOM_InterlaceFrameProgressive, 1149 OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst, 1150 OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst, 1151 OMX_QCOM_InterlaceFrameTopFieldFirst, 1152 OMX_QCOM_InterlaceFrameBottomFieldFirst, 1153 OMX_QCOM_InterlaceFieldTop, 1154 OMX_QCOM_InterlaceFieldBottom 1155 }OMX_QCOM_INTERLACETYPE; 1156 1157 typedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE 1158 { 1159 OMX_U32 nSize; /** Size of the structure in bytes */ 1160 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 1161 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 1162 OMX_BOOL bInterlace; /** Interlace content **/ 1163 }OMX_QCOM_PARAM_VIDEO_INTERLACETYPE; 1164 1165 typedef struct OMX_QCOM_CONFIG_INTERLACETYPE 1166 { 1167 OMX_U32 nSize; 1168 OMX_VERSIONTYPE nVersion; 1169 OMX_U32 nPortIndex; 1170 OMX_U32 nIndex; 1171 OMX_QCOM_INTERLACETYPE eInterlaceType; 1172 }OMX_QCOM_CONFIG_INTERLACETYPE; 1173 1174 #define MAX_PAN_SCAN_WINDOWS 4 1175 1176 typedef struct OMX_QCOM_PANSCAN 1177 { 1178 OMX_U32 numWindows; 1179 OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS]; 1180 } OMX_QCOM_PANSCAN; 1181 1182 typedef struct OMX_QCOM_ASPECT_RATIO 1183 { 1184 OMX_U32 aspectRatioX; 1185 OMX_U32 aspectRatioY; 1186 } OMX_QCOM_ASPECT_RATIO; 1187 1188 typedef struct OMX_QCOM_DISPLAY_ASPECT_RATIO 1189 { 1190 OMX_U32 displayVerticalSize; 1191 OMX_U32 displayHorizontalSize; 1192 } OMX_QCOM_DISPLAY_ASPECT_RATIO; 1193 1194 typedef struct OMX_QCOM_FRAME_PACK_ARRANGEMENT 1195 { 1196 OMX_U32 nSize; 1197 OMX_VERSIONTYPE nVersion; 1198 OMX_U32 nPortIndex; 1199 OMX_U32 id; 1200 OMX_U32 cancel_flag; 1201 OMX_U32 type; 1202 OMX_U32 quincunx_sampling_flag; 1203 OMX_U32 content_interpretation_type; 1204 OMX_U32 spatial_flipping_flag; 1205 OMX_U32 frame0_flipped_flag; 1206 OMX_U32 field_views_flag; 1207 OMX_U32 current_frame_is_frame0_flag; 1208 OMX_U32 frame0_self_contained_flag; 1209 OMX_U32 frame1_self_contained_flag; 1210 OMX_U32 frame0_grid_position_x; 1211 OMX_U32 frame0_grid_position_y; 1212 OMX_U32 frame1_grid_position_x; 1213 OMX_U32 frame1_grid_position_y; 1214 OMX_U32 reserved_byte; 1215 OMX_U32 repetition_period; 1216 OMX_U32 extension_flag; 1217 } OMX_QCOM_FRAME_PACK_ARRANGEMENT; 1218 1219 typedef struct OMX_QCOM_EXTRADATA_QP 1220 { 1221 OMX_U32 nQP; 1222 } OMX_QCOM_EXTRADATA_QP; 1223 1224 typedef struct OMX_QCOM_EXTRADATA_BITS_INFO 1225 { 1226 OMX_U32 header_bits; 1227 OMX_U32 frame_bits; 1228 } OMX_QCOM_EXTRADATA_BITS_INFO; 1229 1230 typedef struct OMX_QCOM_EXTRADATA_USERDATA { 1231 OMX_U32 type; 1232 OMX_U32 data[1]; 1233 } OMX_QCOM_EXTRADATA_USERDATA; 1234 1235 typedef struct OMX_QCOM_EXTRADATA_FRAMEINFO 1236 { 1237 // common frame meta data. interlace related info removed 1238 OMX_VIDEO_PICTURETYPE ePicType; 1239 OMX_QCOM_INTERLACETYPE interlaceType; 1240 OMX_QCOM_PANSCAN panScan; 1241 OMX_QCOM_ASPECT_RATIO aspectRatio; 1242 OMX_QCOM_DISPLAY_ASPECT_RATIO displayAspectRatio; 1243 OMX_U32 nConcealedMacroblocks; 1244 OMX_U32 nFrameRate; 1245 OMX_TICKS nTimeStamp; 1246 } OMX_QCOM_EXTRADATA_FRAMEINFO; 1247 1248 typedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION 1249 { 1250 /** Frame Dimensions added to each YUV buffer */ 1251 OMX_U32 nDecWidth; /** Width rounded to multiple of 16 */ 1252 OMX_U32 nDecHeight; /** Height rounded to multiple of 16 */ 1253 OMX_U32 nActualWidth; /** Actual Frame Width */ 1254 OMX_U32 nActualHeight; /** Actual Frame Height */ 1255 1256 } OMX_QCOM_EXTRADATA_FRAMEDIMENSION; 1257 1258 typedef struct OMX_QCOM_H264EXTRADATA 1259 { 1260 OMX_U64 seiTimeStamp; 1261 } OMX_QCOM_H264EXTRADATA; 1262 1263 typedef struct OMX_QCOM_VC1EXTRADATA 1264 { 1265 OMX_U32 nVC1RangeY; 1266 OMX_U32 nVC1RangeUV; 1267 OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution; 1268 } OMX_QCOM_VC1EXTRADATA; 1269 1270 typedef union OMX_QCOM_EXTRADATA_CODEC_DATA 1271 { 1272 OMX_QCOM_H264EXTRADATA h264ExtraData; 1273 OMX_QCOM_VC1EXTRADATA vc1ExtraData; 1274 } OMX_QCOM_EXTRADATA_CODEC_DATA; 1275 1276 typedef struct OMX_QCOM_EXTRADATA_MBINFO 1277 { 1278 OMX_U32 nFormat; 1279 OMX_U32 nDataSize; 1280 OMX_U8 data[0]; 1281 } OMX_QCOM_EXTRADATA_MBINFO; 1282 1283 typedef struct OMX_QCOM_EXTRADATA_VQZIPSEI { 1284 OMX_U32 nSize; 1285 OMX_U8 data[0]; 1286 } OMX_QCOM_EXTRADATA_VQZIPSEI; 1287 1288 typedef struct OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO { 1289 OMX_U32 nSize; 1290 OMX_VERSIONTYPE nVersion; 1291 OMX_U32 nPortIndex; 1292 OMX_BOOL bEnableRoiInfo; 1293 } OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO; 1294 1295 typedef struct OMX_QTI_VIDEO_CONFIG_ROIINFO { 1296 OMX_U32 nSize; 1297 OMX_VERSIONTYPE nVersion; 1298 OMX_U32 nPortIndex; 1299 OMX_S32 nUpperQpOffset; 1300 OMX_S32 nLowerQpOffset; 1301 OMX_BOOL bUseRoiInfo; 1302 OMX_S32 nRoiMBInfoSize; 1303 OMX_PTR pRoiMBInfo; 1304 } OMX_QTI_VIDEO_CONFIG_ROIINFO; 1305 1306 typedef enum OMX_QCOM_EXTRADATATYPE 1307 { 1308 OMX_ExtraDataFrameInfo = 0x7F000001, 1309 OMX_ExtraDataH264 = 0x7F000002, 1310 OMX_ExtraDataVC1 = 0x7F000003, 1311 OMX_ExtraDataFrameDimension = 0x7F000004, 1312 OMX_ExtraDataVideoEncoderSliceInfo = 0x7F000005, 1313 OMX_ExtraDataConcealMB = 0x7F000006, 1314 OMX_ExtraDataInterlaceFormat = 0x7F000007, 1315 OMX_ExtraDataPortDef = 0x7F000008, 1316 OMX_ExtraDataMP2ExtnData = 0x7F000009, 1317 OMX_ExtraDataMP2UserData = 0x7F00000a, 1318 OMX_ExtraDataVideoLTRInfo = 0x7F00000b, 1319 OMX_ExtraDataFramePackingArrangement = 0x7F00000c, 1320 OMX_ExtraDataQP = 0x7F00000d, 1321 OMX_ExtraDataInputBitsInfo = 0x7F00000e, 1322 OMX_ExtraDataVideoEncoderMBInfo = 0x7F00000f, 1323 OMX_ExtraDataVQZipSEI = 0x7F000010, 1324 } OMX_QCOM_EXTRADATATYPE; 1325 1326 typedef struct OMX_STREAMINTERLACEFORMATTYPE { 1327 OMX_U32 nSize; 1328 OMX_VERSIONTYPE nVersion; 1329 OMX_U32 nPortIndex; 1330 OMX_BOOL bInterlaceFormat; 1331 OMX_U32 nInterlaceFormats; 1332 } OMX_STREAMINTERLACEFORMAT; 1333 1334 typedef enum OMX_INTERLACETYPE 1335 { 1336 OMX_InterlaceFrameProgressive, 1337 OMX_InterlaceInterleaveFrameTopFieldFirst, 1338 OMX_InterlaceInterleaveFrameBottomFieldFirst, 1339 OMX_InterlaceFrameTopFieldFirst, 1340 OMX_InterlaceFrameBottomFieldFirst 1341 } OMX_INTERLACES; 1342 1343 1344 #define OMX_EXTRADATA_HEADER_SIZE 20 1345 1346 /** 1347 * AVC profile types, each profile indicates support for various 1348 * performance bounds and different annexes. 1349 */ 1350 typedef enum QOMX_VIDEO_AVCPROFILETYPE { 1351 QOMX_VIDEO_AVCProfileBaseline = OMX_VIDEO_AVCProfileBaseline, 1352 QOMX_VIDEO_AVCProfileMain = OMX_VIDEO_AVCProfileMain, 1353 QOMX_VIDEO_AVCProfileExtended = OMX_VIDEO_AVCProfileExtended, 1354 QOMX_VIDEO_AVCProfileHigh = OMX_VIDEO_AVCProfileHigh, 1355 QOMX_VIDEO_AVCProfileHigh10 = OMX_VIDEO_AVCProfileHigh10, 1356 QOMX_VIDEO_AVCProfileHigh422 = OMX_VIDEO_AVCProfileHigh422, 1357 QOMX_VIDEO_AVCProfileHigh444 = OMX_VIDEO_AVCProfileHigh444, 1358 /* QCom specific profile indexes */ 1359 QOMX_VIDEO_AVCProfileConstrained = OMX_VIDEO_AVCProfileVendorStartUnused, 1360 QOMX_VIDEO_AVCProfileConstrainedBaseline, 1361 QOMX_VIDEO_AVCProfileConstrainedHigh, 1362 } QOMX_VIDEO_AVCPROFILETYPE; 1363 1364 1365 /** 1366 * H.264 MVC Profiles 1367 */ 1368 typedef enum QOMX_VIDEO_MVCPROFILETYPE { 1369 QOMX_VIDEO_MVCProfileStereoHigh = 0x1, 1370 QOMX_VIDEO_MVCProfileMultiViewHigh = 0x2, 1371 QOMX_VIDEO_MVCProfileKhronosExtensions = 0x6F000000, 1372 QOMX_VIDEO_MVCProfileVendorStartUnused = 0x7F000000, 1373 QOMX_VIDEO_MVCProfileMax = 0x7FFFFFFF 1374 } QOMX_VIDEO_MVCPROFILETYPE; 1375 1376 /** 1377 * H.264 MVC Levels 1378 */ 1379 typedef enum QOMX_VIDEO_MVCLEVELTYPE { 1380 QOMX_VIDEO_MVCLevel1 = 0x01, /**< Level 1 */ 1381 QOMX_VIDEO_MVCLevel1b = 0x02, /**< Level 1b */ 1382 QOMX_VIDEO_MVCLevel11 = 0x04, /**< Level 1.1 */ 1383 QOMX_VIDEO_MVCLevel12 = 0x08, /**< Level 1.2 */ 1384 QOMX_VIDEO_MVCLevel13 = 0x10, /**< Level 1.3 */ 1385 QOMX_VIDEO_MVCLevel2 = 0x20, /**< Level 2 */ 1386 QOMX_VIDEO_MVCLevel21 = 0x40, /**< Level 2.1 */ 1387 QOMX_VIDEO_MVCLevel22 = 0x80, /**< Level 2.2 */ 1388 QOMX_VIDEO_MVCLevel3 = 0x100, /**< Level 3 */ 1389 QOMX_VIDEO_MVCLevel31 = 0x200, /**< Level 3.1 */ 1390 QOMX_VIDEO_MVCLevel32 = 0x400, /**< Level 3.2 */ 1391 QOMX_VIDEO_MVCLevel4 = 0x800, /**< Level 4 */ 1392 QOMX_VIDEO_MVCLevel41 = 0x1000, /**< Level 4.1 */ 1393 QOMX_VIDEO_MVCLevel42 = 0x2000, /**< Level 4.2 */ 1394 QOMX_VIDEO_MVCLevel5 = 0x4000, /**< Level 5 */ 1395 QOMX_VIDEO_MVCLevel51 = 0x8000, /**< Level 5.1 */ 1396 QOMX_VIDEO_MVCLevelKhronosExtensions = 0x6F000000, 1397 QOMX_VIDEO_MVCLevelVendorStartUnused = 0x7F000000, 1398 QOMX_VIDEO_MVCLevelMax = 0x7FFFFFFF 1399 } QOMX_VIDEO_MVCLEVELTYPE; 1400 1401 /** 1402 * DivX Versions 1403 */ 1404 typedef enum QOMX_VIDEO_DIVXFORMATTYPE { 1405 QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */ 1406 QOMX_VIDEO_DIVXFormat311 = 0x02, /**< DivX 3.11 */ 1407 QOMX_VIDEO_DIVXFormat4 = 0x04, /**< DivX 4 */ 1408 QOMX_VIDEO_DIVXFormat5 = 0x08, /**< DivX 5 */ 1409 QOMX_VIDEO_DIVXFormat6 = 0x10, /**< DivX 6 */ 1410 QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000, 1411 QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000, 1412 QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF 1413 } QOMX_VIDEO_DIVXFORMATTYPE; 1414 1415 /** 1416 * DivX profile types, each profile indicates support for 1417 * various performance bounds. 1418 */ 1419 typedef enum QOMX_VIDEO_DIVXPROFILETYPE { 1420 QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */ 1421 QOMX_VIDEO_DivXProfileMobile = 0x02, /**< Mobile Profile */ 1422 QOMX_VIDEO_DivXProfileMT = 0x04, /**< Mobile Theatre Profile */ 1423 QOMX_VIDEO_DivXProfileHT = 0x08, /**< Home Theatre Profile */ 1424 QOMX_VIDEO_DivXProfileHD = 0x10, /**< High Definition Profile */ 1425 QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000, 1426 QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000, 1427 QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF 1428 } QOMX_VIDEO_DIVXPROFILETYPE; 1429 1430 /** 1431 * DivX Video Params 1432 * 1433 * STRUCT MEMBERS: 1434 * nSize : Size of the structure in bytes 1435 * nVersion : OMX specification version information 1436 * nPortIndex : Port that this structure applies to 1437 * eFormat : Version of DivX stream / data 1438 * eProfile : Profile of DivX stream / data 1439 */ 1440 typedef struct QOMX_VIDEO_PARAM_DIVXTYPE { 1441 OMX_U32 nSize; 1442 OMX_VERSIONTYPE nVersion; 1443 OMX_U32 nPortIndex; 1444 QOMX_VIDEO_DIVXFORMATTYPE eFormat; 1445 QOMX_VIDEO_DIVXPROFILETYPE eProfile; 1446 } QOMX_VIDEO_PARAM_DIVXTYPE; 1447 1448 1449 1450 /** 1451 * VP Versions 1452 */ 1453 typedef enum QOMX_VIDEO_VPFORMATTYPE { 1454 QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */ 1455 QOMX_VIDEO_VPFormat6 = 0x02, /**< VP6 Video Format */ 1456 QOMX_VIDEO_VPFormat7 = 0x04, /**< VP7 Video Format */ 1457 QOMX_VIDEO_VPFormat8 = 0x08, /**< VP8 Video Format */ 1458 QOMX_VIDEO_VPFormat9 = 0x10, /**< VP9 Video Format */ 1459 QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000, 1460 QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000, 1461 QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF 1462 } QOMX_VIDEO_VPFORMATTYPE; 1463 1464 /** 1465 * VP profile types, each profile indicates support for various 1466 * encoding tools. 1467 */ 1468 typedef enum QOMX_VIDEO_VPPROFILETYPE { 1469 QOMX_VIDEO_VPProfileSimple = 0x01, /**< Simple Profile, applies to VP6 only */ 1470 QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */ 1471 QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */ 1472 QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */ 1473 QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */ 1474 QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */ 1475 QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000, 1476 QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000, 1477 QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF 1478 } QOMX_VIDEO_VPPROFILETYPE; 1479 1480 /** 1481 * VP Video Params 1482 * 1483 * STRUCT MEMBERS: 1484 * nSize : Size of the structure in bytes 1485 * nVersion : OMX specification version information 1486 * nPortIndex : Port that this structure applies to 1487 * eFormat : Format of VP stream / data 1488 * eProfile : Profile or Version of VP stream / data 1489 */ 1490 typedef struct QOMX_VIDEO_PARAM_VPTYPE { 1491 OMX_U32 nSize; 1492 OMX_VERSIONTYPE nVersion; 1493 OMX_U32 nPortIndex; 1494 QOMX_VIDEO_VPFORMATTYPE eFormat; 1495 QOMX_VIDEO_VPPROFILETYPE eProfile; 1496 } QOMX_VIDEO_PARAM_VPTYPE; 1497 1498 /** 1499 * Spark Versions 1500 */ 1501 typedef enum QOMX_VIDEO_SPARKFORMATTYPE { 1502 QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */ 1503 QOMX_VIDEO_SparkFormat0 = 0x02, /**< Video Format Version 0 */ 1504 QOMX_VIDEO_SparkFormat1 = 0x04, /**< Video Format Version 1 */ 1505 QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000, 1506 QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000, 1507 QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF 1508 } QOMX_VIDEO_SPARKFORMATTYPE; 1509 1510 /** 1511 * Spark Video Params 1512 * 1513 * STRUCT MEMBERS: 1514 * nSize : Size of the structure in bytes 1515 * nVersion : OMX specification version information 1516 * nPortIndex : Port that this structure applies to 1517 * eFormat : Version of Spark stream / data 1518 */ 1519 typedef struct QOMX_VIDEO_PARAM_SPARKTYPE { 1520 OMX_U32 nSize; 1521 OMX_VERSIONTYPE nVersion; 1522 OMX_U32 nPortIndex; 1523 QOMX_VIDEO_SPARKFORMATTYPE eFormat; 1524 } QOMX_VIDEO_PARAM_SPARKTYPE; 1525 1526 1527 typedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES { 1528 OMX_U32 nSize; 1529 OMX_VERSIONTYPE nVersion; 1530 OMX_U32 nPortIndex; 1531 OMX_U32 nNumOfInstances; 1532 } QOMX_VIDEO_QUERY_DECODER_INSTANCES; 1533 1534 typedef struct QOMX_ENABLETYPE { 1535 OMX_U32 nSize; 1536 OMX_VERSIONTYPE nVersion; 1537 OMX_BOOL bEnable; 1538 } QOMX_ENABLETYPE; 1539 1540 typedef enum QOMX_VIDEO_EVENTS { 1541 OMX_EventIndexsettingChanged = OMX_EventVendorStartUnused 1542 } QOMX_VIDEO_EVENTS; 1543 1544 typedef enum QOMX_VIDEO_PICTURE_ORDER { 1545 QOMX_VIDEO_DISPLAY_ORDER = 0x1, 1546 QOMX_VIDEO_DECODE_ORDER = 0x2 1547 } QOMX_VIDEO_PICTURE_ORDER; 1548 1549 typedef struct QOMX_VIDEO_DECODER_PICTURE_ORDER { 1550 OMX_U32 nSize; 1551 OMX_VERSIONTYPE nVersion; 1552 OMX_U32 nPortIndex; 1553 QOMX_VIDEO_PICTURE_ORDER eOutputPictureOrder; 1554 } QOMX_VIDEO_DECODER_PICTURE_ORDER; 1555 1556 typedef struct QOMX_INDEXEXTRADATATYPE { 1557 OMX_U32 nSize; 1558 OMX_VERSIONTYPE nVersion; 1559 OMX_U32 nPortIndex; 1560 OMX_BOOL bEnabled; 1561 OMX_INDEXTYPE nIndex; 1562 } QOMX_INDEXEXTRADATATYPE; 1563 1564 typedef struct QOMX_INDEXTIMESTAMPREORDER { 1565 OMX_U32 nSize; 1566 OMX_VERSIONTYPE nVersion; 1567 OMX_U32 nPortIndex; 1568 OMX_BOOL bEnable; 1569 } QOMX_INDEXTIMESTAMPREORDER; 1570 1571 typedef struct QOMX_INDEXDOWNSCALAR { 1572 OMX_U32 nSize; 1573 OMX_VERSIONTYPE nVersion; 1574 OMX_U32 nPortIndex; 1575 OMX_BOOL bEnable; 1576 } QOMX_INDEXDOWNSCALAR; 1577 1578 typedef struct QOMX_VIDEO_CUSTOM_BUFFERSIZE { 1579 OMX_U32 nSize; 1580 OMX_VERSIONTYPE nVersion; 1581 OMX_U32 nPortIndex; 1582 OMX_U32 nBufferSize; 1583 } QOMX_VIDEO_CUSTOM_BUFFERSIZE; 1584 1585 #define OMX_QCOM_INDEX_PARAM_VIDEO_SYNCFRAMEDECODINGMODE "OMX.QCOM.index.param.video.SyncFrameDecodingMode" 1586 #define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData" 1587 #define OMX_QCOM_INDEX_PARAM_VIDEO_SLICEDELIVERYMODE "OMX.QCOM.index.param.SliceDeliveryMode" 1588 #define OMX_QCOM_INDEX_PARAM_VIDEO_FRAMEPACKING_EXTRADATA "OMX.QCOM.index.param.video.FramePackingExtradata" 1589 #define OMX_QCOM_INDEX_PARAM_VIDEO_QP_EXTRADATA "OMX.QCOM.index.param.video.QPExtradata" 1590 #define OMX_QCOM_INDEX_PARAM_VIDEO_INPUTBITSINFO_EXTRADATA "OMX.QCOM.index.param.video.InputBitsInfoExtradata" 1591 #define OMX_QCOM_INDEX_PARAM_VIDEO_EXTNUSER_EXTRADATA "OMX.QCOM.index.param.video.ExtnUserExtraData" 1592 #define OMX_QCOM_INDEX_CONFIG_VIDEO_FRAMEPACKING_INFO "OMX.QCOM.index.config.video.FramePackingInfo" 1593 #define OMX_QCOM_INDEX_PARAM_VIDEO_MPEG2SEQDISP_EXTRADATA "OMX.QCOM.index.param.video.Mpeg2SeqDispExtraData" 1594 1595 1596 #define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure" 1597 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount" 1598 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod" 1599 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse" 1600 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark" 1601 #define OMX_QCOM_INDEX_CONFIG_VIDEO_MAX_HIER_P_LAYERS "OMX.QCOM.index.config.video.hierplayers" 1602 #define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle" 1603 #define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid" 1604 #define OMX_QCOM_INDEX_PARAM_VIDEO_DRIVERVERSION "OMX.QCOM.index.param.video.FramePackingInfo" 1605 #define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp" 1606 #define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar" 1607 1608 1609 #define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure" 1610 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount" 1611 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod" 1612 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse" 1613 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark" 1614 #define OMX_QCOM_INDEX_CONFIG_VIDEO_MAX_HIER_P_LAYERS "OMX.QCOM.index.config.video.hierplayers" 1615 #define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle" 1616 #define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid" 1617 #define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp" 1618 #define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar" 1619 1620 #define OMX_QCOM_INDEX_PARAM_VIDEO_PASSINPUTBUFFERFD "OMX.QCOM.index.param.video.PassInputBufferFd" 1621 #define OMX_QTI_INDEX_PARAM_VIDEO_PREFER_ADAPTIVE_PLAYBACK "OMX.QTI.index.param.video.PreferAdaptivePlayback" 1622 #define OMX_QTI_INDEX_CONFIG_VIDEO_SETTIMEDATA "OMX.QTI.index.config.video.settimedata" 1623 #define OMX_QTI_INDEX_PARAM_VIDEO_FORCE_COMPRESSED_FOR_DPB "OMX.QTI.index.param.video.ForceCompressedForDPB" 1624 #define OMX_QTI_INDEX_PARAM_VIDEO_ENABLE_ROIINFO "OMX.QTI.index.param.enableRoiInfo" 1625 #define OMX_QTI_INDEX_CONFIG_VIDEO_ROIINFO "OMX.QTI.index.config.RoiInfo" 1626 1627 typedef enum { 1628 QOMX_VIDEO_FRAME_PACKING_CHECKERBOARD = 0, 1629 QOMX_VIDEO_FRAME_PACKING_COLUMN_INTERLEAVE = 1, 1630 QOMX_VIDEO_FRAME_PACKING_ROW_INTERLEAVE = 2, 1631 QOMX_VIDEO_FRAME_PACKING_SIDE_BY_SIDE = 3, 1632 QOMX_VIDEO_FRAME_PACKING_TOP_BOTTOM = 4, 1633 QOMX_VIDEO_FRAME_PACKING_TEMPORAL = 5, 1634 } QOMX_VIDEO_FRAME_PACKING_ARRANGEMENT; 1635 1636 typedef enum { 1637 QOMX_VIDEO_CONTENT_UNSPECIFIED = 0, 1638 QOMX_VIDEO_CONTENT_LR_VIEW = 1, 1639 QOMX_VIDEO_CONTENT_RL_VIEW = 2, 1640 } QOMX_VIDEO_CONTENT_INTERPRETATION; 1641 1642 /** 1643 * Specifies the extended picture types. These values should be 1644 * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to 1645 * signal all pictures types which are allowed. 1646 * 1647 * ENUMS: 1648 * H.264 Specific Picture Types: IDR 1649 */ 1650 typedef enum QOMX_VIDEO_PICTURETYPE { 1651 QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000 1652 } QOMX_VIDEO_PICTURETYPE; 1653 1654 #define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION "OMX.QCOM.index.config.activeregiondetection" 1655 #define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION_STATUS "OMX.QCOM.index.config.activeregiondetectionstatus" 1656 #define OMX_QCOM_INDEX_CONFIG_SCALING_MODE "OMX.QCOM.index.config.scalingmode" 1657 #define OMX_QCOM_INDEX_CONFIG_NOISEREDUCTION "OMX.QCOM.index.config.noisereduction" 1658 #define OMX_QCOM_INDEX_CONFIG_IMAGEENHANCEMENT "OMX.QCOM.index.config.imageenhancement" 1659 #define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */ 1660 1661 1662 typedef struct QOMX_RECTTYPE { 1663 OMX_U32 nSize; 1664 OMX_VERSIONTYPE nVersion; 1665 OMX_S32 nLeft; 1666 OMX_S32 nTop; 1667 OMX_U32 nWidth; 1668 OMX_U32 nHeight; 1669 } QOMX_RECTTYPE; 1670 1671 typedef struct QOMX_ACTIVEREGIONDETECTIONTYPE { 1672 OMX_U32 nSize; 1673 OMX_VERSIONTYPE nVersion; 1674 OMX_U32 nPortIndex; 1675 OMX_BOOL bEnable; 1676 QOMX_RECTTYPE sROI; 1677 OMX_U32 nNumExclusionRegions; 1678 QOMX_RECTTYPE sExclusionRegions[1]; 1679 } QOMX_ACTIVEREGIONDETECTIONTYPE; 1680 1681 typedef struct QOMX_ACTIVEREGIONDETECTION_STATUSTYPE { 1682 OMX_U32 nSize; 1683 OMX_VERSIONTYPE nVersion; 1684 OMX_U32 nPortIndex; 1685 OMX_BOOL bDetected; 1686 QOMX_RECTTYPE sDetectedRegion; 1687 } QOMX_ACTIVEREGIONDETECTION_STATUSTYPE; 1688 1689 typedef enum QOMX_SCALE_MODETYPE { 1690 QOMX_SCALE_MODE_Normal, 1691 QOMX_SCALE_MODE_Anamorphic, 1692 QOMX_SCALE_MODE_Max = 0x7FFFFFFF 1693 } QOMX_SCALE_MODETYPE; 1694 1695 typedef struct QOMX_SCALINGMODETYPE { 1696 OMX_U32 nSize; 1697 OMX_VERSIONTYPE nVersion; 1698 QOMX_SCALE_MODETYPE eScaleMode; 1699 } QOMX_SCALINGMODETYPE; 1700 1701 typedef struct QOMX_NOISEREDUCTIONTYPE { 1702 OMX_U32 nSize; 1703 OMX_VERSIONTYPE nVersion; 1704 OMX_U32 nPortIndex; 1705 OMX_BOOL bEnable; 1706 OMX_BOOL bAutoMode; 1707 OMX_S32 nNoiseReduction; 1708 } QOMX_NOISEREDUCTIONTYPE; 1709 1710 typedef struct QOMX_IMAGEENHANCEMENTTYPE { 1711 OMX_U32 nSize; 1712 OMX_VERSIONTYPE nVersion; 1713 OMX_U32 nPortIndex; 1714 OMX_BOOL bEnable; 1715 OMX_BOOL bAutoMode; 1716 OMX_S32 nImageEnhancement; 1717 } QOMX_IMAGEENHANCEMENTTYPE; 1718 1719 /* 1720 * these are part of OMX1.2 but JB MR2 branch doesn't have them defined 1721 * OMX_IndexParamInterlaceFormat 1722 * OMX_INTERLACEFORMATTYPE 1723 */ 1724 #ifndef OMX_IndexParamInterlaceFormat 1725 #define OMX_IndexParamInterlaceFormat (0x7FF00000) 1726 typedef struct OMX_INTERLACEFORMATTYPE { 1727 OMX_U32 nSize; 1728 OMX_VERSIONTYPE nVersion; 1729 OMX_U32 nPortIndex; 1730 OMX_U32 nFormat; 1731 OMX_TICKS nTimeStamp; 1732 } OMX_INTERLACEFORMATTYPE; 1733 #endif 1734 1735 /** 1736 * This structure is used to indicate the maximum number of buffers 1737 * that a port will hold during data flow. 1738 * 1739 * STRUCT MEMBERS: 1740 * nSize : Size of the structure in bytes 1741 * nVersion : OMX specification version info 1742 * nPortIndex : Port that this structure applies to 1743 * nHeldBufferCount : Read-only, maximum number of buffers that will be held 1744 */ 1745 typedef struct QOMX_HELDBUFFERCOUNTTYPE { 1746 OMX_U32 nSize; 1747 OMX_VERSIONTYPE nVersion; 1748 OMX_U32 nPortIndex; 1749 OMX_U32 nHeldBufferCount; 1750 } QOMX_HELDBUFFERCOUNTTYPE; 1751 1752 typedef enum QOMX_VIDEO_HIERARCHICALCODINGTYPE { 1753 QOMX_HIERARCHICALCODING_P = 0x01, 1754 QOMX_HIERARCHICALCODING_B = 0x02, 1755 } QOMX_VIDEO_HIERARCHICALCODINGTYPE; 1756 1757 typedef struct QOMX_VIDEO_HIERARCHICALLAYERS { 1758 OMX_U32 nSize; 1759 OMX_VERSIONTYPE nVersion; 1760 OMX_U32 nPortIndex; 1761 OMX_U32 nNumLayers; 1762 QOMX_VIDEO_HIERARCHICALCODINGTYPE eHierarchicalCodingType; 1763 } QOMX_VIDEO_HIERARCHICALLAYERS; 1764 1765 typedef struct QOMX_VIDEO_H264ENTROPYCODINGTYPE { 1766 OMX_U32 nSize; 1767 OMX_VERSIONTYPE nVersion; 1768 OMX_BOOL bCabac; 1769 OMX_U32 nCabacInitIdc; 1770 } QOMX_VIDEO_H264ENTROPYCODINGTYPE; 1771 1772 1773 /* VIDEO POSTPROCESSING CTRLS AND ENUMS */ 1774 #define QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ 256 1775 #define VPP_HQV_CONTROL_GLOBAL_START (VPP_HQV_CONTROL_CUST + 1) 1776 1777 typedef enum QOMX_VPP_HQV_MODE { 1778 VPP_HQV_MODE_OFF, 1779 VPP_HQV_MODE_AUTO, 1780 VPP_HQV_MODE_MANUAL, 1781 VPP_HQV_MODE_MAX 1782 } QOMX_VPP_HQV_MODE; 1783 1784 typedef enum QOMX_VPP_HQVCONTROLTYPE { 1785 VPP_HQV_CONTROL_CADE = 0x1, 1786 VPP_HQV_CONTROL_CNR = 0x04, 1787 VPP_HQV_CONTROL_AIE = 0x05, 1788 VPP_HQV_CONTROL_FRC = 0x06, 1789 VPP_HQV_CONTROL_CUST = 0x07, 1790 VPP_HQV_CONTROL_GLOBAL_DEMO = VPP_HQV_CONTROL_GLOBAL_START, 1791 VPP_HQV_CONTROL_MAX, 1792 } QOMX_VPP_HQVCONTROLTYPE; 1793 1794 typedef enum QOMX_VPP_HQV_HUE_MODE { 1795 VPP_HQV_HUE_MODE_OFF, 1796 VPP_HQV_HUE_MODE_ON, 1797 VPP_HQV_HUE_MODE_MAX, 1798 } QOMX_VPP_HQV_HUE_MODE; 1799 1800 typedef enum QOMX_VPP_HQV_FRC_MODE { 1801 VPP_HQV_FRC_MODE_OFF, 1802 VPP_HQV_FRC_MODE_LOW, 1803 VPP_HQV_FRC_MODE_MED, 1804 VPP_HQV_FRC_MODE_HIGH, 1805 VPP_HQV_FRC_MODE_MAX, 1806 } QOMX_VPP_HQV_FRC_MODE; 1807 1808 1809 typedef struct QOMX_VPP_HQVCTRL_CADE { 1810 OMX_U32 nSize; 1811 OMX_VERSIONTYPE nVersion; 1812 QOMX_VPP_HQV_MODE mode; 1813 OMX_U32 level; 1814 OMX_S32 contrast; 1815 OMX_S32 saturation; 1816 } QOMX_VPP_HQVCTRL_CADE; 1817 1818 typedef struct QOMX_VPP_HQVCTRL_CNR { 1819 OMX_U32 nSize; 1820 OMX_VERSIONTYPE nVersion; 1821 QOMX_VPP_HQV_MODE mode; 1822 OMX_U32 level; 1823 } QOMX_VPP_HQVCTRL_CNR; 1824 1825 typedef struct QOMX_VPP_HQVCTRL_AIE { 1826 OMX_U32 nSize; 1827 OMX_VERSIONTYPE nVersion; 1828 QOMX_VPP_HQV_MODE mode; 1829 QOMX_VPP_HQV_HUE_MODE hue_mode; 1830 OMX_U32 cade_level; 1831 OMX_U32 ltm_level; 1832 } QOMX_VPP_HQVCTRL_AIE; 1833 1834 typedef struct QOMX_VPP_HQVCTRL_CUSTOM { 1835 OMX_U32 nSize; 1836 OMX_VERSIONTYPE nVersion; 1837 OMX_U32 id; 1838 OMX_U32 len; 1839 OMX_U8 data[QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ]; 1840 } QOMX_VPP_HQVCTRL_CUSTOM; 1841 1842 typedef struct QOMX_VPP_HQVCTRL_GLOBAL_DEMO { 1843 OMX_U32 nSize; 1844 OMX_VERSIONTYPE nVersion; 1845 OMX_U32 process_percent; 1846 } QOMX_VPP_HQVCTRL_GLOBAL_DEMO; 1847 1848 typedef struct QOMX_VPP_HQVCTRL_FRC { 1849 OMX_U32 nSize; 1850 OMX_VERSIONTYPE nVersion; 1851 QOMX_VPP_HQV_FRC_MODE mode; 1852 } QOMX_VPP_HQVCTRL_FRC; 1853 1854 typedef struct QOMX_VPP_HQVCONTROL { 1855 OMX_U32 nSize; 1856 OMX_VERSIONTYPE nVersion; 1857 QOMX_VPP_HQV_MODE mode; 1858 QOMX_VPP_HQVCONTROLTYPE ctrl_type; 1859 union { 1860 QOMX_VPP_HQVCTRL_CADE cade; 1861 QOMX_VPP_HQVCTRL_CNR cnr; 1862 QOMX_VPP_HQVCTRL_AIE aie; 1863 QOMX_VPP_HQVCTRL_CUSTOM custom; 1864 QOMX_VPP_HQVCTRL_GLOBAL_DEMO global_demo; 1865 QOMX_VPP_HQVCTRL_FRC frc; 1866 }; 1867 } QOMX_VPP_HQVCONTROL; 1868 1869 /* STRUCTURE TO TURN VPP ON */ 1870 typedef struct QOMX_VPP_ENABLE { 1871 OMX_U32 nSize; 1872 OMX_VERSIONTYPE nVersion; 1873 OMX_BOOL enable_vpp; 1874 } QOMX_VPP_ENABLE; 1875 1876 typedef enum OMX_QOMX_VIDEO_MBISTATISTICSTYPE { 1877 QOMX_MBI_STATISTICS_MODE_DEFAULT = 0, 1878 QOMX_MBI_STATISTICS_MODE_1 = 0x01, 1879 QOMX_MBI_STATISTICS_MODE_2 = 0x02, 1880 } OMX_QOMX_VIDEO_MBISTATISTICSTYPE; 1881 1882 typedef struct OMX_QOMX_VIDEO_MBI_STATISTICS { 1883 OMX_U32 nSize; 1884 OMX_VERSIONTYPE nVersion; 1885 OMX_U32 nPortIndex; 1886 OMX_QOMX_VIDEO_MBISTATISTICSTYPE eMBIStatisticsType; 1887 } OMX_QOMX_VIDEO_MBI_STATISTICS; 1888 1889 typedef struct QOMX_VIDEO_BATCHSIZETYPE { 1890 OMX_U32 nSize; 1891 OMX_VERSIONTYPE nVersion; 1892 OMX_U32 nPortIndex; 1893 OMX_U32 nBatchSize; 1894 } QOMX_VIDEO_BATCHSIZETYPE; 1895 1896 #ifdef __cplusplus 1897 } 1898 #endif /* __cplusplus */ 1899 1900 #endif /* __OMX_QCOM_EXTENSIONS_H__ */ 1901