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