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