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