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