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_QcomIndexConfigNumHierPLayers = 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 /*"OMX.google.android.index.allocateNativeHandle"*/ 555 OMX_GoogleAndroidIndexAllocateNativeHandle = 0x7F00005B, 556 557 /*"OMX.google.android.index.describeColorAspects"*/ 558 OMX_QTIIndexConfigDescribeColorAspects = 0x7F00005E, 559 560 OMX_QTIIndexParamVUIExtraDataExtraData = 0x7F00005F, 561 562 OMX_QTIIndexParamMPEG2SeqDispExtraData = 0x7F000060, 563 564 OMX_QTIIndexParamVC1SeqDispExtraData = 0x7F000061, 565 566 OMX_QTIIndexParamVPXColorSpaceExtraData = 0x7F000062, 567 568 }; 569 570 /** 571 * This is custom extension to configure Encoder Aspect Ratio. 572 * 573 * STRUCT MEMBERS 574 * 575 * nSize : Size of Structure in bytes 576 * nVersion : OpenMAX IL specification version information 577 * nSARWidth : Horizontal aspect size 578 * nSARHeight : Vertical aspect size 579 */ 580 581 typedef struct QOMX_EXTNINDEX_VIDEO_VENC_SAR 582 { 583 OMX_U32 nSize; 584 OMX_U32 nVersion; 585 OMX_U32 nSARWidth; 586 OMX_U32 nSARHeight; 587 } QOMX_EXTNINDEX_VIDEO_VENC_SAR; 588 589 /** 590 * This is custom extension to configure Hier-p layers. 591 * This mode configures Hier-p layers dynamically. 592 * 593 * STRUCT MEMBERS 594 * 595 * nSize : Size of Structure in bytes 596 * nVersion : OpenMAX IL specification version information 597 * nNumHierLayers: Set the number of Hier-p layers for the session 598 * - This should be less than the MAX Hier-P 599 * layers set for the session. 600 */ 601 602 typedef struct QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS { 603 OMX_U32 nSize; 604 OMX_VERSIONTYPE nVersion; 605 OMX_U32 nNumHierLayers; 606 } QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS; 607 608 609 /** 610 * This is custom extension to configure Hybrid Hier-p settings. 611 * This mode is different from enabling Hier-p mode. This 612 * property enables Hier-p encoding with LTR referencing in each 613 * sub-GOP. 614 * 615 * STRUCT MEMBERS 616 * 617 * nSize : Size of Structure in bytes 618 * nVersion : OpenMAX IL specification version information 619 * nKeyFrameInterval : Indicates the I frame interval 620 * nHpLayers : Set the number of Hier-p layers for the session 621 * - This should be <= 6. (1 Base layer + 622 * 5 Enhancement layers) 623 * nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS] : Bitrate to 624 * be set for each enhancement layer 625 * nMinQuantizer : minimum session QP 626 * nMaxQuantizer : Maximun session QP 627 */ 628 629 typedef struct QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE { 630 OMX_U32 nSize; 631 OMX_VERSIONTYPE nVersion; 632 OMX_U32 nKeyFrameInterval; 633 OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS]; 634 OMX_U32 nMinQuantizer; 635 OMX_U32 nMaxQuantizer; 636 OMX_U32 nHpLayers; 637 } QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE; 638 639 /** 640 * Encoder Performance Mode. This structure is used to set 641 * performance mode or power save mode when encoding. The search 642 * range is modified to save power or improve quality. 643 * 644 * STRUCT MEMBERS: 645 * OMX_U32 nPerfMode : Performance mode: 646 * 1: MAX_QUALITY 647 * 2: POWER_SAVE 648 */ 649 650 typedef struct QOMX_EXTNINDEX_VIDEO_PERFMODE { 651 OMX_U32 nSize; 652 OMX_VERSIONTYPE nVersion; 653 OMX_U32 nPerfMode; 654 } QOMX_EXTNINDEX_VIDEO_PERFMODE; 655 656 /** 657 * Initial QP parameter. This structure is used to enable 658 * vendor specific extension to let client enable setting 659 * initial QP values to I P B Frames 660 * 661 * STRUCT MEMBERS: 662 * nSize : Size of Structure in bytes 663 * nVersion : OpenMAX IL specification version information 664 * nPortIndex : Index of the port to which this structure applies 665 * OMX_U32 nQpI : First Iframe QP 666 * OMX_U32 nQpP : First Pframe QP 667 * OMX_U32 nQpB : First Bframe QP 668 * OMX_U32 bEnableInitQp : Bit field indicating which frame type(s) shall 669 * use the specified initial QP. 670 * Bit 0: Enable initial QP for I/IDR 671 * and use value specified in nInitQpI 672 * Bit 1: Enable initial QP for P 673 * and use value specified in nInitQpP 674 * Bit 2: Enable initial QP for B 675 * and use value specified in nInitQpB 676 */ 677 678 typedef struct QOMX_EXTNINDEX_VIDEO_INITIALQP { 679 OMX_U32 nSize; 680 OMX_VERSIONTYPE nVersion; 681 OMX_U32 nPortIndex; 682 OMX_U32 nQpI; 683 OMX_U32 nQpP; 684 OMX_U32 nQpB; 685 OMX_U32 bEnableInitQp; 686 } QOMX_EXTNINDEX_VIDEO_INITIALQP; 687 688 /** 689 * Extension index parameter. This structure is used to enable 690 * vendor specific extension on input/output port and 691 * to pass the required flags and data, if any. 692 * The format of flags and data being passed is known to 693 * the client and component apriori. 694 * 695 * STRUCT MEMBERS: 696 * nSize : Size of Structure plus pData size 697 * nVersion : OMX specification version information 698 * nPortIndex : Indicates which port to set 699 * bEnable : Extension index enable (1) or disable (0) 700 * nFlags : Extension index flags, if any 701 * nDataSize : Size of the extension index data to follow 702 * pData : Extension index data, if present. 703 */ 704 typedef struct QOMX_EXTNINDEX_PARAMTYPE { 705 OMX_U32 nSize; 706 OMX_VERSIONTYPE nVersion; 707 OMX_U32 nPortIndex; 708 OMX_BOOL bEnable; 709 OMX_U32 nFlags; 710 OMX_U32 nDataSize; 711 OMX_PTR pData; 712 } QOMX_EXTNINDEX_PARAMTYPE; 713 714 /** 715 * Range index parameter. This structure is used to enable 716 * vendor specific extension on input/output port and 717 * to pass the required minimum and maximum values 718 * 719 * STRUCT MEMBERS: 720 * nSize : Size of Structure in bytes 721 * nVersion : OpenMAX IL specification version information 722 * nPortIndex : Index of the port to which this structure applies 723 * nMin : Minimum value 724 * nMax : Maximum value 725 * nSteSize : Step size 726 */ 727 typedef struct QOMX_EXTNINDEX_RANGETYPE { 728 OMX_U32 nSize; 729 OMX_VERSIONTYPE nVersion; 730 OMX_U32 nPortIndex; 731 OMX_S32 nMin; 732 OMX_S32 nMax; 733 OMX_S32 nStepSize; 734 } QOMX_EXTNINDEX_RANGETYPE; 735 736 /** 737 * Specifies LTR mode types. 738 */ 739 typedef enum QOMX_VIDEO_LTRMODETYPE 740 { 741 QOMX_VIDEO_LTRMode_Disable = 0x0, /**< LTR encoding is disabled */ 742 QOMX_VIDEO_LTRMode_Manual = 0x1, /**< In this mode, IL client configures 743 ** the encoder the LTR count and manually 744 ** controls the marking and use of LTR 745 ** frames during video encoding. 746 */ 747 QOMX_VIDEO_LTRMode_Auto = 0x2, /**< In this mode, IL client configures 748 ** the encoder the LTR count and LTR 749 ** period. The encoder marks LTR frames 750 ** automatically based on the LTR period 751 ** during video encoding. IL client controls 752 ** the use of LTR frames. 753 */ 754 QOMX_VIDEO_LTRMode_MAX = 0x7FFFFFFF /** Maximum LTR Mode type */ 755 } QOMX_VIDEO_LTRMODETYPE; 756 757 /** 758 * LTR mode index parameter. This structure is used 759 * to enable vendor specific extension on output port 760 * to pass the LTR mode information. 761 * 762 * STRUCT MEMBERS: 763 * nSize : Size of Structure in bytes 764 * nVersion : OpenMAX IL specification version information 765 * nPortIndex : Index of the port to which this structure applies 766 * eLTRMode : Specifies the LTR mode used in encoder 767 */ 768 typedef struct QOMX_VIDEO_PARAM_LTRMODE_TYPE { 769 OMX_U32 nSize; 770 OMX_VERSIONTYPE nVersion; 771 OMX_U32 nPortIndex; 772 QOMX_VIDEO_LTRMODETYPE eLTRMode; 773 } QOMX_VIDEO_PARAM_LTRMODE_TYPE; 774 775 /** 776 * LTR count index parameter. This structure is used 777 * to enable vendor specific extension on output port 778 * to pass the LTR count information. 779 * 780 * STRUCT MEMBERS: 781 * nSize : Size of Structure in bytes 782 * nVersion : OpenMAX IL specification version information 783 * nPortIndex : Index of the port to which this structure applies 784 * nCount : Specifies the number of LTR frames stored in the 785 * encoder component 786 */ 787 typedef struct QOMX_VIDEO_PARAM_LTRCOUNT_TYPE { 788 OMX_U32 nSize; 789 OMX_VERSIONTYPE nVersion; 790 OMX_U32 nPortIndex; 791 OMX_U32 nCount; 792 } QOMX_VIDEO_PARAM_LTRCOUNT_TYPE; 793 794 795 /** 796 * This should be used with OMX_QcomIndexParamVideoLTRCount extension. 797 */ 798 typedef QOMX_VIDEO_PARAM_LTRCOUNT_TYPE OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE; 799 800 /** 801 * LTR period index parameter. This structure is used 802 * to enable vendor specific extension on output port 803 * to pass the LTR period information. 804 * 805 * STRUCT MEMBERS: 806 * nSize : Size of Structure in bytes 807 * nVersion : OpenMAX IL specification version information 808 * nPortIndex : Index of the port to which this structure applies 809 * nFrames : Specifies the number of frames between two consecutive 810 * LTR frames. 811 */ 812 typedef struct QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE { 813 OMX_U32 nSize; 814 OMX_VERSIONTYPE nVersion; 815 OMX_U32 nPortIndex; 816 OMX_U32 nFrames; 817 } QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE; 818 819 /** 820 * Marks the next encoded frame as an LTR frame. 821 * STRUCT MEMBERS: 822 * nSize : Size of Structure in bytes 823 * nVersion : OpenMAX IL specification version information 824 * nPortIndex : Index of the port to which this structure applies 825 * nID : Specifies the identifier of the LTR frame to be marked 826 * as reference frame for encoding subsequent frames. 827 */ 828 typedef struct QOMX_VIDEO_CONFIG_LTRMARK_TYPE { 829 OMX_U32 nSize; 830 OMX_VERSIONTYPE nVersion; 831 OMX_U32 nPortIndex; 832 OMX_U32 nID; 833 } QOMX_VIDEO_CONFIG_LTRMARK_TYPE; 834 835 /** 836 * This should be used with OMX_QcomIndexConfigVideoLTRMark extension. 837 */ 838 typedef QOMX_VIDEO_CONFIG_LTRMARK_TYPE OMX_QCOM_VIDEO_CONFIG_LTRMARK_TYPE; 839 840 /** 841 * Specifies an LTR frame to encode subsequent frames. 842 * STRUCT MEMBERS: 843 * nSize : Size of Structure in bytes 844 * nVersion : OpenMAX IL specification version information 845 * nPortIndex : Index of the port to which this structure applies 846 * nID : Specifies the identifier of the LTR frame to be used 847 as reference frame for encoding subsequent frames. 848 * nFrames : Specifies the number of subsequent frames to be 849 encoded using the LTR frame with its identifier 850 nID as reference frame. Short-term reference frames 851 will be used thereafter. The value of 0xFFFFFFFF 852 indicates that all subsequent frames will be 853 encodedusing this LTR frame as reference frame. 854 */ 855 typedef struct QOMX_VIDEO_CONFIG_LTRUSE_TYPE { 856 OMX_U32 nSize; 857 OMX_VERSIONTYPE nVersion; 858 OMX_U32 nPortIndex; 859 OMX_U32 nID; 860 OMX_U32 nFrames; 861 } QOMX_VIDEO_CONFIG_LTRUSE_TYPE; 862 863 /** 864 * This should be used with OMX_QcomIndexConfigVideoLTRUse extension. 865 */ 866 typedef QOMX_VIDEO_CONFIG_LTRUSE_TYPE OMX_QCOM_VIDEO_CONFIG_LTRUSE_TYPE; 867 868 /** 869 * Enumeration used to define the video encoder modes 870 * 871 * ENUMS: 872 * EncoderModeDefault : Default video recording mode. 873 * All encoder settings made through 874 * OMX_SetParameter/OMX_SetConfig are applied. No 875 * parameter is overridden. 876 * EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging 877 * Service). This mode is similar to EncoderModeDefault 878 * except that here the Rate control mode is overridden 879 * internally and set as a variant of variable bitrate with 880 * variable frame rate. After this mode is set if the IL 881 * client tries to set OMX_VIDEO_CONTROLRATETYPE via 882 * OMX_IndexParamVideoBitrate that would be rejected. For 883 * this, client should set mode back to EncoderModeDefault 884 * first and then change OMX_VIDEO_CONTROLRATETYPE. 885 */ 886 typedef enum QOMX_VIDEO_ENCODERMODETYPE 887 { 888 QOMX_VIDEO_EncoderModeDefault = 0x00, 889 QOMX_VIDEO_EncoderModeMMS = 0x01, 890 QOMX_VIDEO_EncoderModeMax = 0x7FFFFFFF 891 } QOMX_VIDEO_ENCODERMODETYPE; 892 893 /** 894 * This structure is used to set the video encoder mode. 895 * 896 * STRUCT MEMBERS: 897 * nSize : Size of the structure in bytes 898 * nVersion : OMX specification version info 899 * nPortIndex : Port that this structure applies to 900 * nMode : defines the video encoder mode 901 */ 902 typedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE { 903 OMX_U32 nSize; 904 OMX_VERSIONTYPE nVersion; 905 OMX_U32 nPortIndex; 906 QOMX_VIDEO_ENCODERMODETYPE nMode; 907 } QOMX_VIDEO_PARAM_ENCODERMODETYPE; 908 909 /** 910 * This structure describes the parameters corresponding to the 911 * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried 912 * during the loaded state. 913 */ 914 915 typedef struct QOMX_VIDEO_SYNTAXHDRTYPE 916 { 917 OMX_U32 nSize; /** Size of the structure in bytes */ 918 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 919 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 920 OMX_U32 nBytes; /** The number of bytes filled in to the buffer */ 921 OMX_U8 data[1]; /** Buffer to store the header information */ 922 } QOMX_VIDEO_SYNTAXHDRTYPE; 923 924 /** 925 * This structure describes the parameters corresponding to the 926 * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set 927 * dynamically during any state except the state invalid. This is primarily 928 * used for setting MaxQP from the application. This is set on the out port. 929 */ 930 931 typedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE 932 { 933 OMX_U32 nSize; /** Size of the structure in bytes */ 934 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 935 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 936 OMX_U32 nTSFactor; /** Temoral spatial tradeoff factor value in 0-100 */ 937 } QOMX_VIDEO_TEMPORALSPATIALTYPE; 938 939 /** 940 * This structure describes the parameters corresponding to the 941 * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set 942 * dynamically during any state except the state invalid. This is set on the out port. 943 */ 944 945 typedef struct QOMX_VIDEO_INTRAPERIODTYPE 946 { 947 OMX_U32 nSize; /** Size of the structure in bytes */ 948 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 949 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 950 OMX_U32 nIDRPeriod; /** This specifies coding a frame as IDR after every nPFrames 951 of intra frames. If this parameter is set to 0, only the 952 first frame of the encode session is an IDR frame. This 953 field is ignored for non-AVC codecs and is used only for 954 codecs that support IDR Period */ 955 OMX_U32 nPFrames; /** The number of "P" frames between two "I" frames */ 956 OMX_U32 nBFrames; /** The number of "B" frames between two "I" frames */ 957 } QOMX_VIDEO_INTRAPERIODTYPE; 958 959 /** 960 * This structure describes the parameters corresponding to the 961 * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set 962 * dynamically during any state except the state invalid. This is used for the buffer negotiation 963 * with other clients. This is set on the out port. 964 */ 965 typedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE 966 { 967 OMX_U32 nSize; /** Size of the structure in bytes */ 968 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 969 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 970 OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */ 971 } OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE; 972 973 /** 974 * This structure describes the parameters corresponding to the 975 * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set 976 * dynamically during any state except the state invalid. This is primarily used for the dynamic/random 977 * intrarefresh. This is set on the out port. 978 */ 979 typedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE 980 { 981 OMX_U32 nSize; /** Size of the structure in bytes */ 982 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 983 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 984 OMX_U32 nRirMBs; /** The number of MBs to be set for intrarefresh */ 985 } OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE; 986 987 988 /** 989 * This structure describes the parameters corresponding to the 990 * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set 991 * dynamically during any state except the state invalid. This is primarily 992 * used for the min/max QP to be set from the application. This 993 * is set on the out port. 994 */ 995 typedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE 996 { 997 OMX_U32 nSize; /** Size of the structure in bytes */ 998 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 999 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 1000 OMX_U32 nMinQP; /** The number for minimum quantization parameter */ 1001 OMX_U32 nMaxQP; /** The number for maximum quantization parameter */ 1002 } OMX_QCOM_VIDEO_CONFIG_QPRANGE; 1003 1004 /** 1005 * This structure describes the parameters for the 1006 * OMX_QcomIndexParamH264AUDelimiter extension. It enables/disables 1007 * the AU delimiters in the H264 stream, which is used by WFD. 1008 */ 1009 typedef struct OMX_QCOM_VIDEO_CONFIG_H264_AUD 1010 { 1011 OMX_U32 nSize; /** Size of the structure in bytes */ 1012 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 1013 OMX_BOOL bEnable; /** Enable/disable the setting */ 1014 } OMX_QCOM_VIDEO_CONFIG_H264_AUD; 1015 1016 typedef enum QOMX_VIDEO_PERF_LEVEL 1017 { 1018 OMX_QCOM_PerfLevelNominal, 1019 OMX_QCOM_PerfLevelTurbo 1020 } QOMX_VIDEO_PERF_LEVEL; 1021 1022 /** 1023 * This structure describes the parameters corresponding 1024 * to OMX_QcomIndexParamPerfLevel extension. It will set 1025 * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. 1026 */ 1027 typedef struct OMX_QCOM_VIDEO_PARAM_PERF_LEVEL { 1028 OMX_U32 nSize; /** Size of the structure in bytes */ 1029 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1030 QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ 1031 } OMX_QCOM_VIDEO_PARAM_PERF_LEVEL; 1032 1033 /** 1034 * This structure describes the parameters corresponding 1035 * to OMX_QcomIndexConfigPerfLevel extension. It will set 1036 * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. 1037 */ 1038 typedef struct OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL { 1039 OMX_U32 nSize; /** Size of the structure in bytes */ 1040 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1041 QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ 1042 } OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL; 1043 1044 typedef enum QOMX_VIDEO_PICTURE_TYPE_DECODE 1045 { 1046 OMX_QCOM_PictypeDecode_IPB, 1047 OMX_QCOM_PictypeDecode_I 1048 } QOMX_VIDEO_PICTURE_TYPE_DECODE; 1049 1050 /** 1051 * This structure describes the parameters corresponding 1052 * to OMX_QcomIndexConfigPictureTypeDecode extension. It 1053 * will set the picture type decode specified by eDecodeType. 1054 */ 1055 typedef struct OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE { 1056 OMX_U32 nSize; /** Size of the structure in bytes */ 1057 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1058 QOMX_VIDEO_PICTURE_TYPE_DECODE eDecodeType; /** Decode type */ 1059 } OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE; 1060 1061 /** 1062 * This structure describes the parameters corresponding 1063 * to OMX_QcomIndexParamH264VUITimingInfo extension. It 1064 * will enable/disable the VUI timing info. 1065 */ 1066 typedef struct OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO { 1067 OMX_U32 nSize; /** Size of the structure in bytes */ 1068 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1069 OMX_BOOL bEnable; /** Enable/disable the setting */ 1070 } OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO; 1071 1072 /** 1073 * This structure describes the parameters corresponding 1074 * to OMX_QcomIndexParamVQZIPSEIType extension. It 1075 * will enable/disable the VQZIP SEI info. 1076 */ 1077 typedef struct OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE { 1078 OMX_U32 nSize; /** Size of the structure in bytes */ 1079 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1080 OMX_BOOL bEnable; /** Enable/disable the setting */ 1081 } OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE; 1082 1083 /** 1084 * This structure describes the parameters corresponding 1085 * to OMX_QcomIndexParamPeakBitrate extension. It will 1086 * set the peak bitrate specified by nPeakBitrate. 1087 */ 1088 typedef struct OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE { 1089 OMX_U32 nSize; /** Size of the structure in bytes */ 1090 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1091 OMX_U32 nPeakBitrate; /** Peak bitrate value */ 1092 } OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE; 1093 1094 /** 1095 * This structure describes the parameters corresponding 1096 * to OMX_QTIIndexParamForceCompressedForDPB extension. Enabling 1097 * this extension will force the split mode DPB(compressed)/OPB(Linear) 1098 * for all resolutions.On some chipsets preferred mode would be combined 1099 * Linear for both DPB/OPB to save memory. For example on 8996 preferred mode 1100 * would be combined linear for resolutions <= 1080p . 1101 * Enabling this might save power but with the cost 1102 * of increased memory i.e almost double the number on output YUV buffers. 1103 */ 1104 typedef struct OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE { 1105 OMX_U32 nSize; /** Size of the structure in bytes */ 1106 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1107 OMX_BOOL bEnable; /** Enable/disable the setting */ 1108 } OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE; 1109 1110 /** 1111 * This structure describes the parameters corresponding 1112 * to OMX_QTIIndexParamForceUnCompressedForOPB extension. Enabling this 1113 * extension will force the OPB to be linear for the current video session. 1114 * If this property is not set, then the OPB will be set to linear or compressed 1115 * based on resolution selected and/or if cpu access is requested on the 1116 * OPB buffer. 1117 */ 1118 typedef struct OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE { 1119 OMX_U32 nSize; /** Sizeo f the structure in bytes */ 1120 OMX_VERSIONTYPE nVersion; /** OMX specification version information */ 1121 OMX_BOOL bEnable; /** Enable/disable the setting */ 1122 } OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE; 1123 1124 typedef struct OMX_VENDOR_EXTRADATATYPE { 1125 OMX_U32 nPortIndex; 1126 OMX_U32 nDataSize; 1127 OMX_U8 *pData; // cdata (codec_data/extradata) 1128 } OMX_VENDOR_EXTRADATATYPE; 1129 1130 /** 1131 * This structure describes the parameters corresponding to the 1132 * OMX_VENDOR_VIDEOFRAMERATE extension. This parameter can be set 1133 * dynamically during any state except the state invalid. This is 1134 * used for frame rate to be set from the application. This 1135 * is set on the in port. 1136 */ 1137 typedef struct OMX_VENDOR_VIDEOFRAMERATE { 1138 OMX_U32 nSize; /** Size of the structure in bytes */ 1139 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 1140 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 1141 OMX_U32 nFps; /** Frame rate value */ 1142 OMX_BOOL bEnabled; /** Flag to enable or disable client's frame rate value */ 1143 } OMX_VENDOR_VIDEOFRAMERATE; 1144 1145 typedef enum OMX_INDEXVENDORTYPE { 1146 OMX_IndexVendorFileReadInputFilename = 0xFF000001, 1147 OMX_IndexVendorParser3gpInputFilename = 0xFF000002, 1148 OMX_IndexVendorVideoExtraData = 0xFF000003, 1149 OMX_IndexVendorAudioExtraData = 0xFF000004, 1150 OMX_IndexVendorVideoFrameRate = 0xFF000005, 1151 } OMX_INDEXVENDORTYPE; 1152 1153 typedef enum OMX_QCOM_VC1RESOLUTIONTYPE 1154 { 1155 OMX_QCOM_VC1_PICTURE_RES_1x1, 1156 OMX_QCOM_VC1_PICTURE_RES_2x1, 1157 OMX_QCOM_VC1_PICTURE_RES_1x2, 1158 OMX_QCOM_VC1_PICTURE_RES_2x2 1159 } OMX_QCOM_VC1RESOLUTIONTYPE; 1160 1161 typedef enum OMX_QCOM_INTERLACETYPE 1162 { 1163 OMX_QCOM_InterlaceFrameProgressive, 1164 OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst, 1165 OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst, 1166 OMX_QCOM_InterlaceFrameTopFieldFirst, 1167 OMX_QCOM_InterlaceFrameBottomFieldFirst, 1168 OMX_QCOM_InterlaceFieldTop, 1169 OMX_QCOM_InterlaceFieldBottom 1170 }OMX_QCOM_INTERLACETYPE; 1171 1172 typedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE 1173 { 1174 OMX_U32 nSize; /** Size of the structure in bytes */ 1175 OMX_VERSIONTYPE nVersion;/** OMX specification version information */ 1176 OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ 1177 OMX_BOOL bInterlace; /** Interlace content **/ 1178 }OMX_QCOM_PARAM_VIDEO_INTERLACETYPE; 1179 1180 typedef struct OMX_QCOM_CONFIG_INTERLACETYPE 1181 { 1182 OMX_U32 nSize; 1183 OMX_VERSIONTYPE nVersion; 1184 OMX_U32 nPortIndex; 1185 OMX_U32 nIndex; 1186 OMX_QCOM_INTERLACETYPE eInterlaceType; 1187 }OMX_QCOM_CONFIG_INTERLACETYPE; 1188 1189 #define MAX_PAN_SCAN_WINDOWS 4 1190 1191 typedef struct OMX_QCOM_PANSCAN 1192 { 1193 OMX_U32 numWindows; 1194 OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS]; 1195 } OMX_QCOM_PANSCAN; 1196 1197 typedef struct OMX_QCOM_ASPECT_RATIO 1198 { 1199 OMX_U32 aspectRatioX; 1200 OMX_U32 aspectRatioY; 1201 } OMX_QCOM_ASPECT_RATIO; 1202 1203 typedef struct OMX_QCOM_DISPLAY_ASPECT_RATIO 1204 { 1205 OMX_U32 displayVerticalSize; 1206 OMX_U32 displayHorizontalSize; 1207 } OMX_QCOM_DISPLAY_ASPECT_RATIO; 1208 1209 typedef struct OMX_QCOM_FRAME_PACK_ARRANGEMENT 1210 { 1211 OMX_U32 nSize; 1212 OMX_VERSIONTYPE nVersion; 1213 OMX_U32 nPortIndex; 1214 OMX_U32 id; 1215 OMX_U32 cancel_flag; 1216 OMX_U32 type; 1217 OMX_U32 quincunx_sampling_flag; 1218 OMX_U32 content_interpretation_type; 1219 OMX_U32 spatial_flipping_flag; 1220 OMX_U32 frame0_flipped_flag; 1221 OMX_U32 field_views_flag; 1222 OMX_U32 current_frame_is_frame0_flag; 1223 OMX_U32 frame0_self_contained_flag; 1224 OMX_U32 frame1_self_contained_flag; 1225 OMX_U32 frame0_grid_position_x; 1226 OMX_U32 frame0_grid_position_y; 1227 OMX_U32 frame1_grid_position_x; 1228 OMX_U32 frame1_grid_position_y; 1229 OMX_U32 reserved_byte; 1230 OMX_U32 repetition_period; 1231 OMX_U32 extension_flag; 1232 } OMX_QCOM_FRAME_PACK_ARRANGEMENT; 1233 1234 typedef struct OMX_QCOM_EXTRADATA_QP 1235 { 1236 OMX_U32 nQP; 1237 } OMX_QCOM_EXTRADATA_QP; 1238 1239 typedef struct OMX_QCOM_EXTRADATA_BITS_INFO 1240 { 1241 OMX_U32 header_bits; 1242 OMX_U32 frame_bits; 1243 } OMX_QCOM_EXTRADATA_BITS_INFO; 1244 1245 typedef struct OMX_QCOM_EXTRADATA_USERDATA { 1246 OMX_U32 type; 1247 OMX_U32 data[1]; 1248 } OMX_QCOM_EXTRADATA_USERDATA; 1249 1250 typedef struct OMX_QCOM_EXTRADATA_FRAMEINFO 1251 { 1252 // common frame meta data. interlace related info removed 1253 OMX_VIDEO_PICTURETYPE ePicType; 1254 OMX_QCOM_INTERLACETYPE interlaceType; 1255 OMX_QCOM_PANSCAN panScan; 1256 OMX_QCOM_ASPECT_RATIO aspectRatio; 1257 OMX_QCOM_DISPLAY_ASPECT_RATIO displayAspectRatio; 1258 OMX_U32 nConcealedMacroblocks; 1259 OMX_U32 nFrameRate; 1260 OMX_TICKS nTimeStamp; 1261 } OMX_QCOM_EXTRADATA_FRAMEINFO; 1262 1263 typedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION 1264 { 1265 /** Frame Dimensions added to each YUV buffer */ 1266 OMX_U32 nDecWidth; /** Width rounded to multiple of 16 */ 1267 OMX_U32 nDecHeight; /** Height rounded to multiple of 16 */ 1268 OMX_U32 nActualWidth; /** Actual Frame Width */ 1269 OMX_U32 nActualHeight; /** Actual Frame Height */ 1270 1271 } OMX_QCOM_EXTRADATA_FRAMEDIMENSION; 1272 1273 typedef struct OMX_QCOM_H264EXTRADATA 1274 { 1275 OMX_U64 seiTimeStamp; 1276 } OMX_QCOM_H264EXTRADATA; 1277 1278 typedef struct OMX_QCOM_VC1EXTRADATA 1279 { 1280 OMX_U32 nVC1RangeY; 1281 OMX_U32 nVC1RangeUV; 1282 OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution; 1283 } OMX_QCOM_VC1EXTRADATA; 1284 1285 typedef union OMX_QCOM_EXTRADATA_CODEC_DATA 1286 { 1287 OMX_QCOM_H264EXTRADATA h264ExtraData; 1288 OMX_QCOM_VC1EXTRADATA vc1ExtraData; 1289 } OMX_QCOM_EXTRADATA_CODEC_DATA; 1290 1291 typedef struct OMX_QCOM_EXTRADATA_MBINFO 1292 { 1293 OMX_U32 nFormat; 1294 OMX_U32 nDataSize; 1295 OMX_U8 data[0]; 1296 } OMX_QCOM_EXTRADATA_MBINFO; 1297 1298 typedef struct OMX_QCOM_EXTRADATA_VQZIPSEI { 1299 OMX_U32 nSize; 1300 OMX_U8 data[0]; 1301 } OMX_QCOM_EXTRADATA_VQZIPSEI; 1302 1303 typedef struct OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO { 1304 OMX_U32 nSize; 1305 OMX_VERSIONTYPE nVersion; 1306 OMX_U32 nPortIndex; 1307 OMX_BOOL bEnableRoiInfo; 1308 } OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO; 1309 1310 typedef struct OMX_QTI_VIDEO_CONFIG_ROIINFO { 1311 OMX_U32 nSize; 1312 OMX_VERSIONTYPE nVersion; 1313 OMX_U32 nPortIndex; 1314 OMX_S32 nUpperQpOffset; 1315 OMX_S32 nLowerQpOffset; 1316 OMX_BOOL bUseRoiInfo; 1317 OMX_S32 nRoiMBInfoSize; 1318 OMX_PTR pRoiMBInfo; 1319 } OMX_QTI_VIDEO_CONFIG_ROIINFO; 1320 1321 typedef enum OMX_QCOM_EXTRADATATYPE 1322 { 1323 OMX_ExtraDataFrameInfo = 0x7F000001, 1324 OMX_ExtraDataH264 = 0x7F000002, 1325 OMX_ExtraDataVC1 = 0x7F000003, 1326 OMX_ExtraDataFrameDimension = 0x7F000004, 1327 OMX_ExtraDataVideoEncoderSliceInfo = 0x7F000005, 1328 OMX_ExtraDataConcealMB = 0x7F000006, 1329 OMX_ExtraDataInterlaceFormat = 0x7F000007, 1330 OMX_ExtraDataPortDef = 0x7F000008, 1331 OMX_ExtraDataMP2ExtnData = 0x7F000009, 1332 OMX_ExtraDataMP2UserData = 0x7F00000a, 1333 OMX_ExtraDataVideoLTRInfo = 0x7F00000b, 1334 OMX_ExtraDataFramePackingArrangement = 0x7F00000c, 1335 OMX_ExtraDataQP = 0x7F00000d, 1336 OMX_ExtraDataInputBitsInfo = 0x7F00000e, 1337 OMX_ExtraDataVideoEncoderMBInfo = 0x7F00000f, 1338 OMX_ExtraDataVQZipSEI = 0x7F000010, 1339 } OMX_QCOM_EXTRADATATYPE; 1340 1341 typedef struct OMX_STREAMINTERLACEFORMATTYPE { 1342 OMX_U32 nSize; 1343 OMX_VERSIONTYPE nVersion; 1344 OMX_U32 nPortIndex; 1345 OMX_BOOL bInterlaceFormat; 1346 OMX_U32 nInterlaceFormats; 1347 } OMX_STREAMINTERLACEFORMAT; 1348 1349 typedef enum OMX_INTERLACETYPE 1350 { 1351 OMX_InterlaceFrameProgressive, 1352 OMX_InterlaceInterleaveFrameTopFieldFirst, 1353 OMX_InterlaceInterleaveFrameBottomFieldFirst, 1354 OMX_InterlaceFrameTopFieldFirst, 1355 OMX_InterlaceFrameBottomFieldFirst 1356 } OMX_INTERLACES; 1357 1358 1359 #define OMX_EXTRADATA_HEADER_SIZE 20 1360 1361 /** 1362 * AVC profile types, each profile indicates support for various 1363 * performance bounds and different annexes. 1364 */ 1365 typedef enum QOMX_VIDEO_AVCPROFILETYPE { 1366 QOMX_VIDEO_AVCProfileBaseline = OMX_VIDEO_AVCProfileBaseline, 1367 QOMX_VIDEO_AVCProfileMain = OMX_VIDEO_AVCProfileMain, 1368 QOMX_VIDEO_AVCProfileExtended = OMX_VIDEO_AVCProfileExtended, 1369 QOMX_VIDEO_AVCProfileHigh = OMX_VIDEO_AVCProfileHigh, 1370 QOMX_VIDEO_AVCProfileHigh10 = OMX_VIDEO_AVCProfileHigh10, 1371 QOMX_VIDEO_AVCProfileHigh422 = OMX_VIDEO_AVCProfileHigh422, 1372 QOMX_VIDEO_AVCProfileHigh444 = OMX_VIDEO_AVCProfileHigh444, 1373 /* QCom specific profile indexes */ 1374 QOMX_VIDEO_AVCProfileConstrained = OMX_VIDEO_AVCProfileVendorStartUnused, 1375 QOMX_VIDEO_AVCProfileConstrainedBaseline, 1376 QOMX_VIDEO_AVCProfileConstrainedHigh, 1377 } QOMX_VIDEO_AVCPROFILETYPE; 1378 1379 1380 /** 1381 * H.264 MVC Profiles 1382 */ 1383 typedef enum QOMX_VIDEO_MVCPROFILETYPE { 1384 QOMX_VIDEO_MVCProfileStereoHigh = 0x1, 1385 QOMX_VIDEO_MVCProfileMultiViewHigh = 0x2, 1386 QOMX_VIDEO_MVCProfileKhronosExtensions = 0x6F000000, 1387 QOMX_VIDEO_MVCProfileVendorStartUnused = 0x7F000000, 1388 QOMX_VIDEO_MVCProfileMax = 0x7FFFFFFF 1389 } QOMX_VIDEO_MVCPROFILETYPE; 1390 1391 /** 1392 * H.264 MVC Levels 1393 */ 1394 typedef enum QOMX_VIDEO_MVCLEVELTYPE { 1395 QOMX_VIDEO_MVCLevel1 = 0x01, /**< Level 1 */ 1396 QOMX_VIDEO_MVCLevel1b = 0x02, /**< Level 1b */ 1397 QOMX_VIDEO_MVCLevel11 = 0x04, /**< Level 1.1 */ 1398 QOMX_VIDEO_MVCLevel12 = 0x08, /**< Level 1.2 */ 1399 QOMX_VIDEO_MVCLevel13 = 0x10, /**< Level 1.3 */ 1400 QOMX_VIDEO_MVCLevel2 = 0x20, /**< Level 2 */ 1401 QOMX_VIDEO_MVCLevel21 = 0x40, /**< Level 2.1 */ 1402 QOMX_VIDEO_MVCLevel22 = 0x80, /**< Level 2.2 */ 1403 QOMX_VIDEO_MVCLevel3 = 0x100, /**< Level 3 */ 1404 QOMX_VIDEO_MVCLevel31 = 0x200, /**< Level 3.1 */ 1405 QOMX_VIDEO_MVCLevel32 = 0x400, /**< Level 3.2 */ 1406 QOMX_VIDEO_MVCLevel4 = 0x800, /**< Level 4 */ 1407 QOMX_VIDEO_MVCLevel41 = 0x1000, /**< Level 4.1 */ 1408 QOMX_VIDEO_MVCLevel42 = 0x2000, /**< Level 4.2 */ 1409 QOMX_VIDEO_MVCLevel5 = 0x4000, /**< Level 5 */ 1410 QOMX_VIDEO_MVCLevel51 = 0x8000, /**< Level 5.1 */ 1411 QOMX_VIDEO_MVCLevelKhronosExtensions = 0x6F000000, 1412 QOMX_VIDEO_MVCLevelVendorStartUnused = 0x7F000000, 1413 QOMX_VIDEO_MVCLevelMax = 0x7FFFFFFF 1414 } QOMX_VIDEO_MVCLEVELTYPE; 1415 1416 /** 1417 * DivX Versions 1418 */ 1419 typedef enum QOMX_VIDEO_DIVXFORMATTYPE { 1420 QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */ 1421 QOMX_VIDEO_DIVXFormat311 = 0x02, /**< DivX 3.11 */ 1422 QOMX_VIDEO_DIVXFormat4 = 0x04, /**< DivX 4 */ 1423 QOMX_VIDEO_DIVXFormat5 = 0x08, /**< DivX 5 */ 1424 QOMX_VIDEO_DIVXFormat6 = 0x10, /**< DivX 6 */ 1425 QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000, 1426 QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000, 1427 QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF 1428 } QOMX_VIDEO_DIVXFORMATTYPE; 1429 1430 /** 1431 * DivX profile types, each profile indicates support for 1432 * various performance bounds. 1433 */ 1434 typedef enum QOMX_VIDEO_DIVXPROFILETYPE { 1435 QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */ 1436 QOMX_VIDEO_DivXProfileMobile = 0x02, /**< Mobile Profile */ 1437 QOMX_VIDEO_DivXProfileMT = 0x04, /**< Mobile Theatre Profile */ 1438 QOMX_VIDEO_DivXProfileHT = 0x08, /**< Home Theatre Profile */ 1439 QOMX_VIDEO_DivXProfileHD = 0x10, /**< High Definition Profile */ 1440 QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000, 1441 QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000, 1442 QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF 1443 } QOMX_VIDEO_DIVXPROFILETYPE; 1444 1445 /** 1446 * DivX Video Params 1447 * 1448 * STRUCT MEMBERS: 1449 * nSize : Size of the structure in bytes 1450 * nVersion : OMX specification version information 1451 * nPortIndex : Port that this structure applies to 1452 * eFormat : Version of DivX stream / data 1453 * eProfile : Profile of DivX stream / data 1454 */ 1455 typedef struct QOMX_VIDEO_PARAM_DIVXTYPE { 1456 OMX_U32 nSize; 1457 OMX_VERSIONTYPE nVersion; 1458 OMX_U32 nPortIndex; 1459 QOMX_VIDEO_DIVXFORMATTYPE eFormat; 1460 QOMX_VIDEO_DIVXPROFILETYPE eProfile; 1461 } QOMX_VIDEO_PARAM_DIVXTYPE; 1462 1463 1464 1465 /** 1466 * VP Versions 1467 */ 1468 typedef enum QOMX_VIDEO_VPFORMATTYPE { 1469 QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */ 1470 QOMX_VIDEO_VPFormat6 = 0x02, /**< VP6 Video Format */ 1471 QOMX_VIDEO_VPFormat7 = 0x04, /**< VP7 Video Format */ 1472 QOMX_VIDEO_VPFormat8 = 0x08, /**< VP8 Video Format */ 1473 QOMX_VIDEO_VPFormat9 = 0x10, /**< VP9 Video Format */ 1474 QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000, 1475 QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000, 1476 QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF 1477 } QOMX_VIDEO_VPFORMATTYPE; 1478 1479 /** 1480 * VP profile types, each profile indicates support for various 1481 * encoding tools. 1482 */ 1483 typedef enum QOMX_VIDEO_VPPROFILETYPE { 1484 QOMX_VIDEO_VPProfileSimple = 0x01, /**< Simple Profile, applies to VP6 only */ 1485 QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */ 1486 QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */ 1487 QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */ 1488 QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */ 1489 QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */ 1490 QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000, 1491 QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000, 1492 QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF 1493 } QOMX_VIDEO_VPPROFILETYPE; 1494 1495 /** 1496 * VP Video Params 1497 * 1498 * STRUCT MEMBERS: 1499 * nSize : Size of the structure in bytes 1500 * nVersion : OMX specification version information 1501 * nPortIndex : Port that this structure applies to 1502 * eFormat : Format of VP stream / data 1503 * eProfile : Profile or Version of VP stream / data 1504 */ 1505 typedef struct QOMX_VIDEO_PARAM_VPTYPE { 1506 OMX_U32 nSize; 1507 OMX_VERSIONTYPE nVersion; 1508 OMX_U32 nPortIndex; 1509 QOMX_VIDEO_VPFORMATTYPE eFormat; 1510 QOMX_VIDEO_VPPROFILETYPE eProfile; 1511 } QOMX_VIDEO_PARAM_VPTYPE; 1512 1513 /** 1514 * Spark Versions 1515 */ 1516 typedef enum QOMX_VIDEO_SPARKFORMATTYPE { 1517 QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */ 1518 QOMX_VIDEO_SparkFormat0 = 0x02, /**< Video Format Version 0 */ 1519 QOMX_VIDEO_SparkFormat1 = 0x04, /**< Video Format Version 1 */ 1520 QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000, 1521 QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000, 1522 QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF 1523 } QOMX_VIDEO_SPARKFORMATTYPE; 1524 1525 /** 1526 * Spark Video Params 1527 * 1528 * STRUCT MEMBERS: 1529 * nSize : Size of the structure in bytes 1530 * nVersion : OMX specification version information 1531 * nPortIndex : Port that this structure applies to 1532 * eFormat : Version of Spark stream / data 1533 */ 1534 typedef struct QOMX_VIDEO_PARAM_SPARKTYPE { 1535 OMX_U32 nSize; 1536 OMX_VERSIONTYPE nVersion; 1537 OMX_U32 nPortIndex; 1538 QOMX_VIDEO_SPARKFORMATTYPE eFormat; 1539 } QOMX_VIDEO_PARAM_SPARKTYPE; 1540 1541 1542 typedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES { 1543 OMX_U32 nSize; 1544 OMX_VERSIONTYPE nVersion; 1545 OMX_U32 nPortIndex; 1546 OMX_U32 nNumOfInstances; 1547 } QOMX_VIDEO_QUERY_DECODER_INSTANCES; 1548 1549 typedef struct QOMX_ENABLETYPE { 1550 OMX_U32 nSize; 1551 OMX_VERSIONTYPE nVersion; 1552 OMX_BOOL bEnable; 1553 } QOMX_ENABLETYPE; 1554 1555 typedef enum QOMX_VIDEO_EVENTS { 1556 OMX_EventIndexsettingChanged = OMX_EventVendorStartUnused 1557 } QOMX_VIDEO_EVENTS; 1558 1559 typedef enum QOMX_VIDEO_PICTURE_ORDER { 1560 QOMX_VIDEO_DISPLAY_ORDER = 0x1, 1561 QOMX_VIDEO_DECODE_ORDER = 0x2 1562 } QOMX_VIDEO_PICTURE_ORDER; 1563 1564 typedef struct QOMX_VIDEO_DECODER_PICTURE_ORDER { 1565 OMX_U32 nSize; 1566 OMX_VERSIONTYPE nVersion; 1567 OMX_U32 nPortIndex; 1568 QOMX_VIDEO_PICTURE_ORDER eOutputPictureOrder; 1569 } QOMX_VIDEO_DECODER_PICTURE_ORDER; 1570 1571 typedef struct QOMX_INDEXEXTRADATATYPE { 1572 OMX_U32 nSize; 1573 OMX_VERSIONTYPE nVersion; 1574 OMX_U32 nPortIndex; 1575 OMX_BOOL bEnabled; 1576 OMX_INDEXTYPE nIndex; 1577 } QOMX_INDEXEXTRADATATYPE; 1578 1579 typedef struct QOMX_INDEXTIMESTAMPREORDER { 1580 OMX_U32 nSize; 1581 OMX_VERSIONTYPE nVersion; 1582 OMX_U32 nPortIndex; 1583 OMX_BOOL bEnable; 1584 } QOMX_INDEXTIMESTAMPREORDER; 1585 1586 typedef struct QOMX_INDEXDOWNSCALAR { 1587 OMX_U32 nSize; 1588 OMX_VERSIONTYPE nVersion; 1589 OMX_U32 nPortIndex; 1590 OMX_BOOL bEnable; 1591 } QOMX_INDEXDOWNSCALAR; 1592 1593 typedef struct QOMX_VIDEO_CUSTOM_BUFFERSIZE { 1594 OMX_U32 nSize; 1595 OMX_VERSIONTYPE nVersion; 1596 OMX_U32 nPortIndex; 1597 OMX_U32 nBufferSize; 1598 } QOMX_VIDEO_CUSTOM_BUFFERSIZE; 1599 1600 #define OMX_QCOM_INDEX_PARAM_VIDEO_SYNCFRAMEDECODINGMODE "OMX.QCOM.index.param.video.SyncFrameDecodingMode" 1601 #define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData" 1602 #define OMX_QCOM_INDEX_PARAM_VIDEO_SLICEDELIVERYMODE "OMX.QCOM.index.param.SliceDeliveryMode" 1603 #define OMX_QCOM_INDEX_PARAM_VIDEO_FRAMEPACKING_EXTRADATA "OMX.QCOM.index.param.video.FramePackingExtradata" 1604 #define OMX_QCOM_INDEX_PARAM_VIDEO_QP_EXTRADATA "OMX.QCOM.index.param.video.QPExtradata" 1605 #define OMX_QCOM_INDEX_PARAM_VIDEO_INPUTBITSINFO_EXTRADATA "OMX.QCOM.index.param.video.InputBitsInfoExtradata" 1606 #define OMX_QCOM_INDEX_PARAM_VIDEO_EXTNUSER_EXTRADATA "OMX.QCOM.index.param.video.ExtnUserExtraData" 1607 #define OMX_QCOM_INDEX_CONFIG_VIDEO_FRAMEPACKING_INFO "OMX.QCOM.index.config.video.FramePackingInfo" 1608 #define OMX_QCOM_INDEX_PARAM_VIDEO_MPEG2SEQDISP_EXTRADATA "OMX.QCOM.index.param.video.Mpeg2SeqDispExtraData" 1609 1610 1611 #define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure" 1612 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount" 1613 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod" 1614 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse" 1615 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark" 1616 #define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle" 1617 #define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid" 1618 #define OMX_QCOM_INDEX_PARAM_VIDEO_DRIVERVERSION "OMX.QCOM.index.param.video.FramePackingInfo" 1619 #define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp" 1620 #define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar" 1621 1622 1623 #define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure" 1624 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount" 1625 #define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod" 1626 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse" 1627 #define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark" 1628 #define OMX_QCOM_INDEX_CONFIG_VIDEO_HIER_P_LAYERS "OMX.QCOM.index.config.video.hierplayers" 1629 #define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle" 1630 #define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid" 1631 #define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp" 1632 #define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar" 1633 1634 #define OMX_QCOM_INDEX_PARAM_VIDEO_PASSINPUTBUFFERFD "OMX.QCOM.index.param.video.PassInputBufferFd" 1635 #define OMX_QTI_INDEX_PARAM_VIDEO_PREFER_ADAPTIVE_PLAYBACK "OMX.QTI.index.param.video.PreferAdaptivePlayback" 1636 #define OMX_QTI_INDEX_CONFIG_VIDEO_SETTIMEDATA "OMX.QTI.index.config.video.settimedata" 1637 #define OMX_QTI_INDEX_PARAM_VIDEO_FORCE_COMPRESSED_FOR_DPB "OMX.QTI.index.param.video.ForceCompressedForDPB" 1638 #define OMX_QTI_INDEX_PARAM_VIDEO_ENABLE_ROIINFO "OMX.QTI.index.param.enableRoiInfo" 1639 #define OMX_QTI_INDEX_CONFIG_VIDEO_ROIINFO "OMX.QTI.index.config.RoiInfo" 1640 1641 typedef enum { 1642 QOMX_VIDEO_FRAME_PACKING_CHECKERBOARD = 0, 1643 QOMX_VIDEO_FRAME_PACKING_COLUMN_INTERLEAVE = 1, 1644 QOMX_VIDEO_FRAME_PACKING_ROW_INTERLEAVE = 2, 1645 QOMX_VIDEO_FRAME_PACKING_SIDE_BY_SIDE = 3, 1646 QOMX_VIDEO_FRAME_PACKING_TOP_BOTTOM = 4, 1647 QOMX_VIDEO_FRAME_PACKING_TEMPORAL = 5, 1648 } QOMX_VIDEO_FRAME_PACKING_ARRANGEMENT; 1649 1650 typedef enum { 1651 QOMX_VIDEO_CONTENT_UNSPECIFIED = 0, 1652 QOMX_VIDEO_CONTENT_LR_VIEW = 1, 1653 QOMX_VIDEO_CONTENT_RL_VIEW = 2, 1654 } QOMX_VIDEO_CONTENT_INTERPRETATION; 1655 1656 /** 1657 * Specifies the extended picture types. These values should be 1658 * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to 1659 * signal all pictures types which are allowed. 1660 * 1661 * ENUMS: 1662 * H.264 Specific Picture Types: IDR 1663 */ 1664 typedef enum QOMX_VIDEO_PICTURETYPE { 1665 QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000 1666 } QOMX_VIDEO_PICTURETYPE; 1667 1668 #define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION "OMX.QCOM.index.config.activeregiondetection" 1669 #define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION_STATUS "OMX.QCOM.index.config.activeregiondetectionstatus" 1670 #define OMX_QCOM_INDEX_CONFIG_SCALING_MODE "OMX.QCOM.index.config.scalingmode" 1671 #define OMX_QCOM_INDEX_CONFIG_NOISEREDUCTION "OMX.QCOM.index.config.noisereduction" 1672 #define OMX_QCOM_INDEX_CONFIG_IMAGEENHANCEMENT "OMX.QCOM.index.config.imageenhancement" 1673 #define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */ 1674 1675 1676 typedef struct QOMX_RECTTYPE { 1677 OMX_U32 nSize; 1678 OMX_VERSIONTYPE nVersion; 1679 OMX_S32 nLeft; 1680 OMX_S32 nTop; 1681 OMX_U32 nWidth; 1682 OMX_U32 nHeight; 1683 } QOMX_RECTTYPE; 1684 1685 typedef struct QOMX_ACTIVEREGIONDETECTIONTYPE { 1686 OMX_U32 nSize; 1687 OMX_VERSIONTYPE nVersion; 1688 OMX_U32 nPortIndex; 1689 OMX_BOOL bEnable; 1690 QOMX_RECTTYPE sROI; 1691 OMX_U32 nNumExclusionRegions; 1692 QOMX_RECTTYPE sExclusionRegions[1]; 1693 } QOMX_ACTIVEREGIONDETECTIONTYPE; 1694 1695 typedef struct QOMX_ACTIVEREGIONDETECTION_STATUSTYPE { 1696 OMX_U32 nSize; 1697 OMX_VERSIONTYPE nVersion; 1698 OMX_U32 nPortIndex; 1699 OMX_BOOL bDetected; 1700 QOMX_RECTTYPE sDetectedRegion; 1701 } QOMX_ACTIVEREGIONDETECTION_STATUSTYPE; 1702 1703 typedef enum QOMX_SCALE_MODETYPE { 1704 QOMX_SCALE_MODE_Normal, 1705 QOMX_SCALE_MODE_Anamorphic, 1706 QOMX_SCALE_MODE_Max = 0x7FFFFFFF 1707 } QOMX_SCALE_MODETYPE; 1708 1709 typedef struct QOMX_SCALINGMODETYPE { 1710 OMX_U32 nSize; 1711 OMX_VERSIONTYPE nVersion; 1712 QOMX_SCALE_MODETYPE eScaleMode; 1713 } QOMX_SCALINGMODETYPE; 1714 1715 typedef struct QOMX_NOISEREDUCTIONTYPE { 1716 OMX_U32 nSize; 1717 OMX_VERSIONTYPE nVersion; 1718 OMX_U32 nPortIndex; 1719 OMX_BOOL bEnable; 1720 OMX_BOOL bAutoMode; 1721 OMX_S32 nNoiseReduction; 1722 } QOMX_NOISEREDUCTIONTYPE; 1723 1724 typedef struct QOMX_IMAGEENHANCEMENTTYPE { 1725 OMX_U32 nSize; 1726 OMX_VERSIONTYPE nVersion; 1727 OMX_U32 nPortIndex; 1728 OMX_BOOL bEnable; 1729 OMX_BOOL bAutoMode; 1730 OMX_S32 nImageEnhancement; 1731 } QOMX_IMAGEENHANCEMENTTYPE; 1732 1733 /* 1734 * these are part of OMX1.2 but JB MR2 branch doesn't have them defined 1735 * OMX_IndexParamInterlaceFormat 1736 * OMX_INTERLACEFORMATTYPE 1737 */ 1738 #ifndef OMX_IndexParamInterlaceFormat 1739 #define OMX_IndexParamInterlaceFormat (0x7FF00000) 1740 typedef struct OMX_INTERLACEFORMATTYPE { 1741 OMX_U32 nSize; 1742 OMX_VERSIONTYPE nVersion; 1743 OMX_U32 nPortIndex; 1744 OMX_U32 nFormat; 1745 OMX_TICKS nTimeStamp; 1746 } OMX_INTERLACEFORMATTYPE; 1747 #endif 1748 1749 /** 1750 * This structure is used to indicate the maximum number of buffers 1751 * that a port will hold during data flow. 1752 * 1753 * STRUCT MEMBERS: 1754 * nSize : Size of the structure in bytes 1755 * nVersion : OMX specification version info 1756 * nPortIndex : Port that this structure applies to 1757 * nHeldBufferCount : Read-only, maximum number of buffers that will be held 1758 */ 1759 typedef struct QOMX_HELDBUFFERCOUNTTYPE { 1760 OMX_U32 nSize; 1761 OMX_VERSIONTYPE nVersion; 1762 OMX_U32 nPortIndex; 1763 OMX_U32 nHeldBufferCount; 1764 } QOMX_HELDBUFFERCOUNTTYPE; 1765 1766 typedef enum QOMX_VIDEO_HIERARCHICALCODINGTYPE { 1767 QOMX_HIERARCHICALCODING_P = 0x01, 1768 QOMX_HIERARCHICALCODING_B = 0x02, 1769 } QOMX_VIDEO_HIERARCHICALCODINGTYPE; 1770 1771 typedef struct QOMX_VIDEO_HIERARCHICALLAYERS { 1772 OMX_U32 nSize; 1773 OMX_VERSIONTYPE nVersion; 1774 OMX_U32 nPortIndex; 1775 OMX_U32 nNumLayers; 1776 QOMX_VIDEO_HIERARCHICALCODINGTYPE eHierarchicalCodingType; 1777 } QOMX_VIDEO_HIERARCHICALLAYERS; 1778 1779 typedef struct QOMX_VIDEO_H264ENTROPYCODINGTYPE { 1780 OMX_U32 nSize; 1781 OMX_VERSIONTYPE nVersion; 1782 OMX_BOOL bCabac; 1783 OMX_U32 nCabacInitIdc; 1784 } QOMX_VIDEO_H264ENTROPYCODINGTYPE; 1785 1786 1787 /* VIDEO POSTPROCESSING CTRLS AND ENUMS */ 1788 #define QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ 256 1789 #define VPP_HQV_CONTROL_GLOBAL_START (VPP_HQV_CONTROL_CUST + 1) 1790 1791 typedef enum QOMX_VPP_HQV_MODE { 1792 VPP_HQV_MODE_OFF, 1793 VPP_HQV_MODE_AUTO, 1794 VPP_HQV_MODE_MANUAL, 1795 VPP_HQV_MODE_MAX 1796 } QOMX_VPP_HQV_MODE; 1797 1798 typedef enum QOMX_VPP_HQVCONTROLTYPE { 1799 VPP_HQV_CONTROL_CADE = 0x1, 1800 VPP_HQV_CONTROL_CNR = 0x04, 1801 VPP_HQV_CONTROL_AIE = 0x05, 1802 VPP_HQV_CONTROL_FRC = 0x06, 1803 VPP_HQV_CONTROL_CUST = 0x07, 1804 VPP_HQV_CONTROL_GLOBAL_DEMO = VPP_HQV_CONTROL_GLOBAL_START, 1805 VPP_HQV_CONTROL_MAX, 1806 } QOMX_VPP_HQVCONTROLTYPE; 1807 1808 typedef enum QOMX_VPP_HQV_HUE_MODE { 1809 VPP_HQV_HUE_MODE_OFF, 1810 VPP_HQV_HUE_MODE_ON, 1811 VPP_HQV_HUE_MODE_MAX, 1812 } QOMX_VPP_HQV_HUE_MODE; 1813 1814 typedef enum QOMX_VPP_HQV_FRC_MODE { 1815 VPP_HQV_FRC_MODE_OFF, 1816 VPP_HQV_FRC_MODE_LOW, 1817 VPP_HQV_FRC_MODE_MED, 1818 VPP_HQV_FRC_MODE_HIGH, 1819 VPP_HQV_FRC_MODE_MAX, 1820 } QOMX_VPP_HQV_FRC_MODE; 1821 1822 1823 typedef struct QOMX_VPP_HQVCTRL_CADE { 1824 OMX_U32 nSize; 1825 OMX_VERSIONTYPE nVersion; 1826 QOMX_VPP_HQV_MODE mode; 1827 OMX_U32 level; 1828 OMX_S32 contrast; 1829 OMX_S32 saturation; 1830 } QOMX_VPP_HQVCTRL_CADE; 1831 1832 typedef struct QOMX_VPP_HQVCTRL_CNR { 1833 OMX_U32 nSize; 1834 OMX_VERSIONTYPE nVersion; 1835 QOMX_VPP_HQV_MODE mode; 1836 OMX_U32 level; 1837 } QOMX_VPP_HQVCTRL_CNR; 1838 1839 typedef struct QOMX_VPP_HQVCTRL_AIE { 1840 OMX_U32 nSize; 1841 OMX_VERSIONTYPE nVersion; 1842 QOMX_VPP_HQV_MODE mode; 1843 QOMX_VPP_HQV_HUE_MODE hue_mode; 1844 OMX_U32 cade_level; 1845 OMX_U32 ltm_level; 1846 } QOMX_VPP_HQVCTRL_AIE; 1847 1848 typedef struct QOMX_VPP_HQVCTRL_CUSTOM { 1849 OMX_U32 nSize; 1850 OMX_VERSIONTYPE nVersion; 1851 OMX_U32 id; 1852 OMX_U32 len; 1853 OMX_U8 data[QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ]; 1854 } QOMX_VPP_HQVCTRL_CUSTOM; 1855 1856 typedef struct QOMX_VPP_HQVCTRL_GLOBAL_DEMO { 1857 OMX_U32 nSize; 1858 OMX_VERSIONTYPE nVersion; 1859 OMX_U32 process_percent; 1860 } QOMX_VPP_HQVCTRL_GLOBAL_DEMO; 1861 1862 typedef struct QOMX_VPP_HQVCTRL_FRC { 1863 OMX_U32 nSize; 1864 OMX_VERSIONTYPE nVersion; 1865 QOMX_VPP_HQV_FRC_MODE mode; 1866 } QOMX_VPP_HQVCTRL_FRC; 1867 1868 typedef struct QOMX_VPP_HQVCONTROL { 1869 OMX_U32 nSize; 1870 OMX_VERSIONTYPE nVersion; 1871 QOMX_VPP_HQV_MODE mode; 1872 QOMX_VPP_HQVCONTROLTYPE ctrl_type; 1873 union { 1874 QOMX_VPP_HQVCTRL_CADE cade; 1875 QOMX_VPP_HQVCTRL_CNR cnr; 1876 QOMX_VPP_HQVCTRL_AIE aie; 1877 QOMX_VPP_HQVCTRL_CUSTOM custom; 1878 QOMX_VPP_HQVCTRL_GLOBAL_DEMO global_demo; 1879 QOMX_VPP_HQVCTRL_FRC frc; 1880 }; 1881 } QOMX_VPP_HQVCONTROL; 1882 1883 /* STRUCTURE TO TURN VPP ON */ 1884 typedef struct QOMX_VPP_ENABLE { 1885 OMX_U32 nSize; 1886 OMX_VERSIONTYPE nVersion; 1887 OMX_BOOL enable_vpp; 1888 } QOMX_VPP_ENABLE; 1889 1890 typedef enum OMX_QOMX_VIDEO_MBISTATISTICSTYPE { 1891 QOMX_MBI_STATISTICS_MODE_DEFAULT = 0, 1892 QOMX_MBI_STATISTICS_MODE_1 = 0x01, 1893 QOMX_MBI_STATISTICS_MODE_2 = 0x02, 1894 } OMX_QOMX_VIDEO_MBISTATISTICSTYPE; 1895 1896 typedef struct OMX_QOMX_VIDEO_MBI_STATISTICS { 1897 OMX_U32 nSize; 1898 OMX_VERSIONTYPE nVersion; 1899 OMX_U32 nPortIndex; 1900 OMX_QOMX_VIDEO_MBISTATISTICSTYPE eMBIStatisticsType; 1901 } OMX_QOMX_VIDEO_MBI_STATISTICS; 1902 1903 typedef struct QOMX_VIDEO_BATCHSIZETYPE { 1904 OMX_U32 nSize; 1905 OMX_VERSIONTYPE nVersion; 1906 OMX_U32 nPortIndex; 1907 OMX_U32 nBatchSize; 1908 } QOMX_VIDEO_BATCHSIZETYPE; 1909 1910 #ifdef __cplusplus 1911 } 1912 #endif /* __cplusplus */ 1913 1914 #endif /* __OMX_QCOM_EXTENSIONS_H__ */ 1915