1826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*--------------------------------------------------------------------------
26eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCopyright (c) 2009-2013, The Linux Foundation. All rights reserved.
3826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
4826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevRedistribution and use in source and binary forms, with or without
5826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevmodification, are permitted provided that the following conditions are met:
6826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    * Redistributions of source code must retain the above copyright
7826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      notice, this list of conditions and the following disclaimer.
8826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    * Redistributions in binary form must reproduce the above copyright
9826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      notice, this list of conditions and the following disclaimer in the
10826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      documentation and/or other materials provided with the distribution.
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor
12826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      the names of its contributors may be used to endorse or promote
13826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      products derived from this software without specific prior written
14826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      permission.
15826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
16826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev--------------------------------------------------------------------------*/
28826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifndef __OMX_QCOM_EXTENSIONS_H__
29826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define __OMX_QCOM_EXTENSIONS_H__
30826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
31826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef __cplusplus
32826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevextern "C" {
33826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif /* __cplusplus */
34826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
35826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*============================================================================
36826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev*//** @file OMX_QCOMExtns.h
37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  This header contains constants and type definitions that specify the
38826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  extensions added to the OpenMAX Vendor specific APIs.
39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
40826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev*//*========================================================================*/
41826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
42826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
43826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev///////////////////////////////////////////////////////////////////////////////
44826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev//                             Include Files
45826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev///////////////////////////////////////////////////////////////////////////////
46826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "OMX_Core.h"
47826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "OMX_Video.h"
48826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
49826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
50826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This extension is used to register mapping of a virtual
51826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * address to a physical address. This extension is a parameter
52826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * which can be set using the OMX_SetParameter macro. The data
53826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * pointer corresponding to this extension is
54826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_QCOM_MemMapEntry. This parameter is a 'write only'
55826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * parameter (Current value cannot be queried using
56826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_GetParameter macro).
57826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
58826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_EXTN_REGISTER_MMAP     "OMX.QCOM.index.param.register_mmap"
59826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
60826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
61826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the data pointer corresponding to
62826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * the OMX_QCOM_MMAP_REGISTER_EXTN extension. This parameter
63826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * must be set only 'after' populating a port with a buffer
64826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * using OMX_UseBuffer, wherein the data pointer of the buffer
65826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * corresponds to the virtual address as specified in this
66826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * structure.
67826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
68826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevstruct OMX_QCOM_PARAM_MEMMAPENTRYTYPE
69826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
70826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;              /** Size of the structure in bytes */
71826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
72826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port number the structure applies to */
73826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
74826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /**
75826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     * The virtual address of memory block
76826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     */
77826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U64 nVirtualAddress;
78826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
79826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /**
80826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     * The physical address corresponding to the virtual address. The physical
81826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     * address is contiguous for the entire valid range of the virtual
82826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     * address.
83826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     */
84826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U64 nPhysicalAddress;
85826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
86826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
87826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define QOMX_VIDEO_IntraRefreshRandom (OMX_VIDEO_IntraRefreshVendorStartUnused + 0)
88826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
896eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/* This error event is used for H.264 long-term reference (LTR) encoding.
906eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * When IL client specifies an LTR frame with its identifier via
916eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE to the encoder, if the specified
926eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * LTR frame can not be located by the encoder in its LTR list, the encoder
936eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * issues this error event to IL client to notify the failure of LTRUse config.
946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
956eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#define QOMX_ErrorLTRUseFailed        (OMX_ErrorVendorStartUnused + 1)
966eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
97826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define QOMX_VIDEO_BUFFERFLAG_BFRAME 0x00100000
98826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
99826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define QOMX_VIDEO_BUFFERFLAG_EOSEQ  0x00200000
100826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_PORTDEFN_EXTN   "OMX.QCOM.index.param.portdefn"
102826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* Allowed APIs on the above Index: OMX_GetParameter() and OMX_SetParameter() */
103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOMMemoryRegion
105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
106826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_MemRegionInvalid,
107826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_MemRegionEBI1,
108826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_MemRegionSMI,
109826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_MemRegionMax = 0X7FFFFFFF
110826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOMMemoryRegion;
111826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
112826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOMCacheAttr
113826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
114826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_CacheAttrNone,
115826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_CacheAttrWriteBack,
116826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_CacheAttrWriteThrough,
117826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_CacheAttrMAX = 0X7FFFFFFF
118826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOMCacheAttr;
119826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
120826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOMRectangle
121826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
122826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_S32 x;
123826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_S32 y;
124826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_S32 dx;
125826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_S32 dy;
126826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOMRectangle;
127826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
128826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** OMX_QCOMFramePackingFormat
129826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  * Input or output buffer format
130826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  */
131826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOMFramePackingFormat
132826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
133826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  /* 0 - unspecified
134826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   */
135826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_Unspecified,
136826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
137826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  /*  1 - Partial frames may be present OMX IL 1.1.1 Figure 2-10:
138826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  Case 1??Each Buffer Filled In Whole or In Part
139826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   */
140826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_Arbitrary,
141826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
142826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  /*  2 - Multiple complete frames per buffer (integer number)
143826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  OMX IL 1.1.1 Figure 2-11: Case 2�Each Buffer Filled with
144826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  Only Complete Frames of Data
145826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   */
146826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_CompleteFrames,
147826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
148826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  /*  3 - Only one complete frame per buffer, no partial frame
149826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  OMX IL 1.1.1 Figure 2-12: Case 3�Each Buffer Filled with
150826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  Only One Frame of Compressed Data. Usually at least one
151826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  complete unit of data will be delivered in a buffer for
152826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  uncompressed data formats.
153826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   */
154826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_OnlyOneCompleteFrame,
155826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
156826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  /*  4 - Only one complete subframe per buffer, no partial subframe
157826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  Example: In H264, one complete NAL per buffer, where one frame
158826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   *  can contatin multiple NAL
159826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   */
160826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_OnlyOneCompleteSubFrame,
161826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
162826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_QCOM_FramePacking_MAX = 0X7FFFFFFF
163826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOMFramePackingFormat;
164826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
165826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PARAM_PORTDEFINITIONTYPE {
166826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize;           /** Size of the structure in bytes */
167826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion;/** OMX specification version information */
168826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
169826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
170826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** Platform specific memory region EBI1, SMI, etc.,*/
171826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_QCOMMemoryRegion nMemRegion;
172826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
173826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_QCOMCacheAttr nCacheAttr; /** Cache attributes */
174826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
175826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** Input or output buffer format */
176826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nFramePackingFormat;
177826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
178826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_PARAM_PORTDEFINITIONTYPE;
179826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1806eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct OMX_QCOM_VIDEO_PARAM_QPRANGETYPE {
1816eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
1826eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
1836eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
1846eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 minQP;
1856eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 maxQP;
1866eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} OMX_QCOM_VIDEO_PARAM_QPRANGETYPE;
1876eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
188826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_PLATFORMPVT_EXTN   "OMX.QCOM.index.param.platformprivate"
189826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** Allowed APIs on the above Index: OMX_SetParameter() */
190826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
191826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
192826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
193826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Enum for PMEM information */
194826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_PLATFORM_PRIVATE_PMEM = 0x1
195826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE;
196826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
197826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** IL client will set the following structure. A failure
198826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  code will be returned if component does not support the
199826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  value provided for 'type'.
200826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
201826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevstruct OMX_QCOM_PLATFORMPRIVATE_EXTN
202826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
203826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;        /** Size of the structure in bytes */
204826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion; /** OMX spec version information */
205826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;  /** Port number on which usebuffer extn is applied */
206826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
207826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Type of extensions should match an entry from
208826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
209826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    */
210826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
211826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
212826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
213826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO
214826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
215826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** pmem file descriptor */
216826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 pmem_fd;
217826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Offset from pmem device base address */
218826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 offset;
219826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO;
220826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
221826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PLATFORM_PRIVATE_ENTRY
222826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
223826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Entry type */
224826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
225826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
226826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Pointer to platform specific entry */
227826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    void* entry;
228826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_PLATFORM_PRIVATE_ENTRY;
229826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
230826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PLATFORM_PRIVATE_LIST
231826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
232826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Number of entries */
233826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nEntries;
234826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
235826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Pointer to array of platform specific entries *
236826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     * Contiguous block of OMX_QCOM_PLATFORM_PRIVATE_ENTRY element
237826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    */
238826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_PLATFORM_PRIVATE_ENTRY* entryList;
239826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_PLATFORM_PRIVATE_LIST;
240826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
241826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_FRAME_PACKING_FORMAT   "OMX.QCOM.index.param.framepackfmt"
242826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* Allowed API call: OMX_GetParameter() */
243826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* IL client can use this index to rerieve the list of frame formats *
244826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * supported by the component */
245826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
246826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_FRAME_PACKINGFORMAT_TYPE {
247826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
248826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
249826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
250826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nIndex;
251826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOMFramePackingFormat eframePackingFormat;
252826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_FRAME_PACKINGFORMAT_TYPE;
253826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
254826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
255826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
256826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Following is the enum for color formats supported on Qualcomm
257826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * MSMs YVU420SemiPlanar color format is not defined in OpenMAX
258826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * 1.1.1 and prior versions of OpenMAX specification.
259826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
260826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
261826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevenum OMX_QCOM_COLOR_FORMATTYPE
262826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
263826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
264826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** YVU420SemiPlanar: YVU planar format, organized with a first
265826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  plane containing Y pixels, and a second plane containing
266826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  interleaved V and U pixels. V and U pixels are sub-sampled
267826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  by a factor of two both horizontally and vertically.
268826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
2696eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
270826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka,
271826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka,
272826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka,
2736eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m,
274826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_COLOR_FormatAndroidOpaque = (OMX_COLOR_FORMATTYPE) OMX_COLOR_FormatVendorStartUnused  + 0x789,
275826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
276826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
277826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevenum OMX_QCOM_VIDEO_CODINGTYPE
278826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
279826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** Codecs support by qualcomm which are not listed in OMX 1.1.x
280826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  spec
281826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *   */
282826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_VIDEO_CodingVC1  = 0x7FA30C00 ,
283826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_VIDEO_CodingWMV9 = 0x7FA30C01,
284826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CodingDivx = 0x7FA30C02,     /**< Value when coding is Divx */
285826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CodingSpark = 0x7FA30C03,     /**< Value when coding is Sorenson Spark */
286826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CodingVp = 0x7FA30C04,
2876eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_CodingVp8 = 0x7FA30C05,
2886eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_CodingHevc = 0x7FA30C06
289826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
290826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
291826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevenum OMX_QCOM_EXTN_INDEXTYPE
292826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
293826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /** Qcom proprietary extension index list */
294826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
295826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /* "OMX.QCOM.index.param.register_mmap" */
296826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexRegmmap = 0x7F000000,
297826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
298826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /* "OMX.QCOM.index.param.platformprivate" */
299826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexPlatformPvt = 0x7F000001,
300826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
301826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /* "OMX.QCOM.index.param.portdefn" */
302826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexPortDefn = 0x7F000002,
303826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
304826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /* "OMX.QCOM.index.param.framepackingformat" */
305826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexPortFramePackFmt = 0x7F000003,
306826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
307826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.Interlaced */
308826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamInterlaced = 0x7F000004,
309826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
310826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.config.interlaceformat */
311826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexConfigInterlaced = 0x7F000005,
312826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
313826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.syntaxhdr" */
314826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_IndexParamVideoSyntaxHdr = 0x7F000006,
315826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
316826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.config.intraperiod" */
317826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_IndexConfigVideoIntraperiod = 0x7F000007,
318826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
319826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.config.randomIntrarefresh" */
320826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_IndexConfigVideoIntraRefresh = 0x7F000008,
321826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
322826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.config.video.TemporalSpatialTradeOff" */
323826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_IndexConfigVideoTemporalSpatialTradeOff = 0x7F000009,
324826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
325826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.video.EncoderMode" */
326826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_IndexParamVideoEncoderMode = 0x7F00000A,
327826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
328826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.Divxtype */
329826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoDivx = 0x7F00000B,
330826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
331826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.Sparktype */
332826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoSpark = 0x7F00000C,
333826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
334826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.Vptype */
335826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoVp = 0x7F00000D,
336826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
337826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexQueryNumberOfVideoDecInstance = 0x7F00000E,
338826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
339826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoSyncFrameDecodingMode = 0x7F00000F,
340826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
341826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoDecoderPictureOrder = 0x7F000010,
342826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
343826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexConfigVideoFramePackingArrangement = 0x7F000011,
344826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
345826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamConcealMBMapExtraData = 0x7F000012,
346826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
347826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamFrameInfoExtraData = 0x7F000013,
348826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
349826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamInterlaceExtraData = 0x7F000014,
350826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
351826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamH264TimeInfo = 0x7F000015,
352826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
353826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamIndexExtraDataType = 0x7F000016,
354826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
355826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_GoogleAndroidIndexEnableAndroidNativeBuffers = 0x7F000017,
356826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
357826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_GoogleAndroidIndexUseAndroidNativeBuffer = 0x7F000018,
358826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
359826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage = 0x7F000019,
360826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
361826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.config.video.QPRange" */
362826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexConfigVideoQPRange = 0x7F00001A,
363826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
364826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.EnableTimeStampReoder"*/
365826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamEnableTimeStampReorder = 0x7F00001B,
366826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
367826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.google.android.index.storeMetaDataInBuffers"*/
3688e9fdc3254721b488ebdb9e9e62fb2d99eac392dVineeta Srivastava    OMX_QcomIndexParamVideoMetaBufferMode = 0x7F00001C,
369826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
370826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.google.android.index.useAndroidNativeBuffer2"*/
371826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_GoogleAndroidIndexUseAndroidNativeBuffer2 = 0x7F00001D,
372826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
373826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    /*"OMX.QCOM.index.param.VideoMaxAllowedBitrateCheck"*/
374826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexParamVideoMaxAllowedBitrateCheck = 0x7F00001E,
375826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
376826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QcomIndexEnableSliceDeliveryMode = 0x7F00001F,
3773145f89c1398e32bb7fc6cc03866388f42d2bad3Deva Ramasubramanian
3786eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_QcomIndexEnableExtnUserData = 0x7F000020,
3796eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3806eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.param.video.EnableSmoothStreaming"*/
3816eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_QcomIndexParamEnableSmoothStreaming = 0x7F000021,
3826eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3836eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.param.video.QPRange" */
3846eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_QcomIndexParamVideoQPRange = 0x7F000022,
3856eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3866eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_QcomIndexEnableH263PlusPType = 0x7F000023,
3872d1c6fa918d6d3afcb93a25c0e6d60cac8365275Deva Ramasubramanian
3886eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.param.video.LTRCountRangeSupported"*/
3896eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexParamVideoLTRCountRangeSupported = 0x7F000024,
3906eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3916eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.param.video.LTRMode"*/
3926eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexParamVideoLTRMode = 0x7F000025,
3936eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.param.video.LTRCount"*/
3956eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexParamVideoLTRCount = 0x7F000026,
3966eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
3976eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.config.video.LTRPeriod"*/
3986eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexConfigVideoLTRPeriod = 0x7F000027,
3996eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
4006eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.config.video.LTRUse"*/
4016eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexConfigVideoLTRUse = 0x7F000028,
4026eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
4036eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    /*"OMX.QCOM.index.config.video.LTRMark"*/
4046eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_IndexConfigVideoLTRMark = 0x7F000029,
405e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan
406e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    OMX_QcomIndexParamSequenceHeaderWithIDR = 0x7F00002A,
407e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan
408e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    OMX_QcomIndexParamEnableVUIStreamRestrictFlag = 0x7F00002B,
409ac64d24c26fd060fb3e2b1c9a1db4ab18dbf7c5dPraveen Chavan
410ac64d24c26fd060fb3e2b1c9a1db4ab18dbf7c5dPraveen Chavan    OMX_GoogleAndroidIndexPrepareForAdaptivePlayback = 0x7F00002C,
411826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
412826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
413826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
414826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Extension index parameter.  This structure is used to enable
415826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * vendor specific extension on input/output port and
416826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * to pass the required flags and data, if any.
417826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * The format of flags and data being passed is known to
418826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * the client and component apriori.
419826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
420826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * STRUCT MEMBERS:
421826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nSize              : Size of Structure plus pData size
422826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nVersion           : OMX specification version information
423826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nPortIndex         : Indicates which port to set
424826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  bEnable            : Extension index enable (1) or disable (0)
425826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nFlags             : Extension index flags, if any
426826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nDataSize          : Size of the extension index data to follow
427826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  pData              : Extension index data, if present.
428826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
429826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_EXTNINDEX_PARAMTYPE {
430826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
431826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
432826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
433826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_BOOL bEnable;
434826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nFlags;
435826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nDataSize;
436826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_PTR pData;
437826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_EXTNINDEX_PARAMTYPE;
438826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
439826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
4406eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Range index parameter.  This structure is used to enable
4416eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * vendor specific extension on input/output port and
4426eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to pass the required minimum and maximum values
4436eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *
4446eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
4456eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
4466eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
4476eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
4486eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nMin               : Minimum value
4496eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nMax               : Maximum value
4506eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSteSize           : Step size
4516eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
4526eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_EXTNINDEX_RANGETYPE {
4536eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
4546eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
4556eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
4566eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_S32 nMin;
4576eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_S32 nMax;
4586eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_S32 nStepSize;
4596eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_EXTNINDEX_RANGETYPE;
4606eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
4616eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
4626eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *   Specifies LTR mode types.
4636eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
4646eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef enum QOMX_VIDEO_LTRMODETYPE
4656eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal{
4666eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_LTRMode_Disable    = 0x0, /**< LTR encoding is disabled */
4676eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_LTRMode_Manual     = 0x1, /**< In this mode, IL client configures
4686eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  the encoder the LTR count and manually
4696eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  controls the marking and use of LTR
4706eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  frames during video encoding.
4716eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           */
4726eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_LTRMode_Auto       = 0x2, /**< In this mode, IL client configures
4736eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  the encoder the LTR count and LTR
4746eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  period. The encoder marks LTR frames
4756eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  automatically based on the LTR period
4766eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  during video encoding. IL client controls
4776eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           **  the use of LTR frames.
4786eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                                           */
4796eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_LTRMode_MAX    = 0x7FFFFFFF /** Maximum LTR Mode type */
4806eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_LTRMODETYPE;
4816eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
4826eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
4836eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * LTR mode index parameter.  This structure is used
4846eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to enable vendor specific extension on output port
4856eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to pass the LTR mode information.
4866eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *
4876eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
4886eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
4896eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
4906eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
4916eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  eLTRMode           : Specifies the LTR mode used in encoder
4926eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
4936eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_VIDEO_PARAM_LTRMODE_TYPE {
4946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
4956eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
4966eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
4976eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    QOMX_VIDEO_LTRMODETYPE eLTRMode;
4986eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_PARAM_LTRMODE_TYPE;
4996eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
5006eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
5016eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * LTR count index parameter.  This structure is used
5026eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to enable vendor specific extension on output port
5036eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to pass the LTR count information.
5046eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *
5056eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
5066eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
5076eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
5086eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
5096eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nCount             : Specifies the number of LTR frames stored in the
5106eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *                       encoder component
5116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
5126eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_VIDEO_PARAM_LTRCOUNT_TYPE {
5136eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
5146eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
5156eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
5166eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nCount;
5176eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_PARAM_LTRCOUNT_TYPE;
5186eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
5196eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
5206eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * LTR period index parameter.  This structure is used
5216eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to enable vendor specific extension on output port
5226eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * to pass the LTR period information.
5236eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *
5246eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
5256eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
5266eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
5276eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
5286eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nFrames            : Specifies the number of frames between two consecutive
5296eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *                       LTR frames.
5306eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
5316eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE {
5326eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
5336eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
5346eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
5356eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nFrames;
5366eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE;
5376eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
5386eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
5396eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Marks the next encoded frame as an LTR frame.
5406eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
5416eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
5426eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
5436eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
5446eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
5456eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_VIDEO_CONFIG_LTRMARK_TYPE {
5466eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
5476eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
5486eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
5496eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_CONFIG_LTRMARK_TYPE;
5506eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
5516eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
5526eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Specifies an LTR frame to encode subsequent frames.
5536eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * STRUCT MEMBERS:
5546eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nSize              : Size of Structure in bytes
5556eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nVersion           : OpenMAX IL specification version information
5566eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nPortIndex         : Index of the port to which this structure applies
5576eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nID                : Specifies the identifier of the LTR frame to be used
5586eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         as reference frame for encoding subsequent frames.
5596eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal *  nFrames            : Specifies the number of subsequent frames to be
5606eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         encoded using the LTR frame with its identifier
5616eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         nID as reference frame. Short-term reference frames
5626eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         will be used thereafter. The value of 0xFFFFFFFF
5636eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         indicates that all subsequent frames will be
5646eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal                         encodedusing this LTR frame as reference frame.
5656eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal */
5666eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct QOMX_VIDEO_CONFIG_LTRUSE_TYPE {
5676eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nSize;
5686eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_VERSIONTYPE nVersion;
5696eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nPortIndex;
5706eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nID;
5716eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    OMX_U32 nFrames;
5726eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} QOMX_VIDEO_CONFIG_LTRUSE_TYPE;
5736eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
5746eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal/**
575826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Enumeration used to define the video encoder modes
576826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
577826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * ENUMS:
578826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  EncoderModeDefault : Default video recording mode.
579826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                       All encoder settings made through
580826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                       OMX_SetParameter/OMX_SetConfig are applied. No
581826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                       parameter is overridden.
582826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging
583826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   Service). This mode is similar to EncoderModeDefault
584826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   except that here the Rate control mode is overridden
585826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   internally and set as a variant of variable bitrate with
586826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   variable frame rate. After this mode is set if the IL
587826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   client tries to set OMX_VIDEO_CONTROLRATETYPE via
588826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   OMX_IndexParamVideoBitrate that would be rejected. For
589826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   this, client should set mode back to EncoderModeDefault
590826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *                   first and then change OMX_VIDEO_CONTROLRATETYPE.
591826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
592826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_ENCODERMODETYPE
593826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
594826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_EncoderModeDefault        = 0x00,
595826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_EncoderModeMMS            = 0x01,
596826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_EncoderModeMax            = 0x7FFFFFFF
597826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_ENCODERMODETYPE;
598826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
599826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
600826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure is used to set the video encoder mode.
601826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
602826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * STRUCT MEMBERS:
603826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nSize      : Size of the structure in bytes
604826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nVersion   : OMX specification version info
605826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nPortIndex : Port that this structure applies to
606826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nMode : defines the video encoder mode
607826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
608826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE {
609826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
610826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
611826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
612826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_ENCODERMODETYPE nMode;
613826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_PARAM_ENCODERMODETYPE;
614826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
615826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
616826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
617826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried
618826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * during the loaded state.
619826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
620826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
621826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_SYNTAXHDRTYPE
622826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
623826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;           /** Size of the structure in bytes */
624826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
625826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
626826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nBytes;    	    /** The number of bytes filled in to the buffer */
627826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U8 data[1];          /** Buffer to store the header information */
628826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_SYNTAXHDRTYPE;
629826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
630826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
631826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
632826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set
633826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * dynamically during any state except the state invalid.  This is primarily
634826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * used for setting MaxQP from the application.  This is set on the out port.
635826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
636826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
637826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE
638826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
639826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;           /** Size of the structure in bytes */
640826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
641826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
642826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nTSFactor;       /** Temoral spatial tradeoff factor value in 0-100 */
643826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_TEMPORALSPATIALTYPE;
644826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
645826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
646826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
647826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set
648826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * dynamically during any state except the state invalid.  This is set on the out port.
649826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
650826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
651826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_INTRAPERIODTYPE
652826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
653826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;           /** Size of the structure in bytes */
654826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
655826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
656826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nIDRPeriod;      /** This specifies coding a frame as IDR after every nPFrames
657826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev			        of intra frames. If this parameter is set to 0, only the
658826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev				first frame of the encode session is an IDR frame. This
659826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev				field is ignored for non-AVC codecs and is used only for
660826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev				codecs that support IDR Period */
661826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPFrames;         /** The number of "P" frames between two "I" frames */
662826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nBFrames;         /** The number of "B" frames between two "I" frames */
663826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_INTRAPERIODTYPE;
664826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
665826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
666826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
667826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set
668826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * dynamically during any state except the state invalid. This is used for the buffer negotiation
669826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * with other clients.  This is set on the out port.
670826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
671826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE
672826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
673826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;            /** Size of the structure in bytes */
674826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion; /** OMX specification version information */
675826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;       /** Portindex which is extended by this structure */
676826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */
677826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE;
678826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
679826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
680826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
681826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set
682826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * dynamically during any state except the state invalid. This is primarily used for the dynamic/random
683826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * intrarefresh.  This is set on the out port.
684826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
685826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE
686826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
687826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;           /** Size of the structure in bytes */
688826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
689826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
690826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nRirMBs;         /** The number of MBs to be set for intrarefresh */
691826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE;
692826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
693826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
694826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
695826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * This structure describes the parameters corresponding to the
696826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set
697826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * dynamically during any state except the state invalid. This is primarily
698826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * used for the min/max QP to be set from the application.  This
699826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * is set on the out port.
700826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
701826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE
702826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
703826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nSize;           /** Size of the structure in bytes */
704826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
705826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
706826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nMinQP;          /** The number for minimum quantization parameter */
707826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 nMaxQP;          /** The number for maximum quantization parameter */
708826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_VIDEO_CONFIG_QPRANGE;
709826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
710826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
711826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_VENDOR_EXTRADATATYPE  {
712826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
713826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nDataSize;
714826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U8  *pData;     // cdata (codec_data/extradata)
715826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_VENDOR_EXTRADATATYPE;
716826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
71761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan/**
71861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * This structure describes the parameters corresponding to the
71961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * OMX_VENDOR_VIDEOFRAMERATE extension. This parameter can be set
72061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * dynamically during any state except the state invalid. This is
72161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * used for frame rate to be set from the application. This
72261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * is set on the in port.
72361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan */
72461a2c6a19dbd06a317a419623020e02056661876Praveen Chavantypedef struct OMX_VENDOR_VIDEOFRAMERATE  {
72561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan   OMX_U32 nSize;           /** Size of the structure in bytes */
72661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
72761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
72861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan   OMX_U32 nFps;            /** Frame rate value */
72961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan   OMX_BOOL bEnabled;       /** Flag to enable or disable client's frame rate value */
73061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan} OMX_VENDOR_VIDEOFRAMERATE;
73161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
732826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_INDEXVENDORTYPE {
733826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_IndexVendorFileReadInputFilename = 0xFF000001,
734826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_IndexVendorParser3gpInputFilename = 0xFF000002,
735826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_IndexVendorVideoExtraData = 0xFF000003,
73661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    OMX_IndexVendorAudioExtraData = 0xFF000004,
73761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    OMX_IndexVendorVideoFrameRate = 0xFF000005,
738826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_INDEXVENDORTYPE;
739826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
740826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOM_VC1RESOLUTIONTYPE
741826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
742826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1_PICTURE_RES_1x1,
743826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1_PICTURE_RES_2x1,
744826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1_PICTURE_RES_1x2,
745826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1_PICTURE_RES_2x2
746826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_VC1RESOLUTIONTYPE;
747826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
748826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOM_INTERLACETYPE
749826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
750826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceFrameProgressive,
751826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst,
752826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst,
753826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceFrameTopFieldFirst,
754826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceFrameBottomFieldFirst,
755826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceFieldTop,
756826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_InterlaceFieldBottom
757826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_INTERLACETYPE;
758826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
759826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE
760826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
761826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;           /** Size of the structure in bytes */
762826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;/** OMX specification version information */
763826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
764826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_BOOL bInterlace;  /** Interlace content **/
765826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_PARAM_VIDEO_INTERLACETYPE;
766826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
767826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_CONFIG_INTERLACETYPE
768826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
769826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
770826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
771826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
772826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nIndex;
773826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_QCOM_INTERLACETYPE eInterlaceType;
774826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_CONFIG_INTERLACETYPE;
775826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
776826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define MAX_PAN_SCAN_WINDOWS 4
777826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
778826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_PANSCAN
779826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
780826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 numWindows;
781826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS];
782826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_PANSCAN;
783826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
784826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_ASPECT_RATIO
785826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
786826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 aspectRatioX;
787826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32 aspectRatioY;
788826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_ASPECT_RATIO;
789826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
7906eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittaltypedef struct OMX_QCOM_DISPLAY_ASPECT_RATIO
7916eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal{
7926eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_U32 displayVerticalSize;
7936eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_U32 displayHorizontalSize;
7946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} OMX_QCOM_DISPLAY_ASPECT_RATIO;
7956eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
796826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_FRAME_PACK_ARRANGEMENT
797826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
798826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 nSize;
799826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_VERSIONTYPE nVersion;
800826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 nPortIndex;
801826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 id;
802826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 cancel_flag;
803826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 type;
804826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 quincunx_sampling_flag;
805826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 content_interpretation_type;
806826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 spatial_flipping_flag;
807826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame0_flipped_flag;
808826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 field_views_flag;
809826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 current_frame_is_frame0_flag;
810826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame0_self_contained_flag;
811826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame1_self_contained_flag;
812826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame0_grid_position_x;
813826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame0_grid_position_y;
814826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame1_grid_position_x;
815826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 frame1_grid_position_y;
816826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 reserved_byte;
817826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 repetition_period;
818826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_U32 extension_flag;
819826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_FRAME_PACK_ARRANGEMENT;
820826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
821826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_EXTRADATA_FRAMEINFO
822826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
823826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   // common frame meta data. interlace related info removed
824826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_VIDEO_PICTURETYPE  ePicType;
825826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_INTERLACETYPE interlaceType;
826826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_PANSCAN       panScan;
827826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_ASPECT_RATIO  aspectRatio;
8286eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_QCOM_DISPLAY_ASPECT_RATIO displayAspectRatio;
829826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32                nConcealedMacroblocks;
830826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32                nFrameRate;
831826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_EXTRADATA_FRAMEINFO;
832826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
833826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION
834826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
835826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   /** Frame Dimensions added to each YUV buffer */
836826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32   nDecWidth;  /** Width  rounded to multiple of 16 */
837826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32   nDecHeight; /** Height rounded to multiple of 16 */
838826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32   nActualWidth; /** Actual Frame Width */
839826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32   nActualHeight; /** Actual Frame Height */
840826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
841826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_QCOM_EXTRADATA_FRAMEDIMENSION;
842826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
843826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_H264EXTRADATA
844826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
845826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U64 seiTimeStamp;
846826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_H264EXTRADATA;
847826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
848826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_QCOM_VC1EXTRADATA
849826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
850826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32                     nVC1RangeY;
851826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_U32                     nVC1RangeUV;
852826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution;
853826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_VC1EXTRADATA;
854826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
855826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef union OMX_QCOM_EXTRADATA_CODEC_DATA
856826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
857826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_H264EXTRADATA h264ExtraData;
858826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_QCOM_VC1EXTRADATA vc1ExtraData;
859826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_EXTRADATA_CODEC_DATA;
860826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
861826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_QCOM_EXTRADATATYPE
862826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
863826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataFrameInfo = 0x7F000001,
864826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataH264 = 0x7F000002,
865826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataVC1 = 0x7F000003,
866826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataFrameDimension = 0x7F000004,
867826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataVideoEncoderSliceInfo = 0x7F000005,
868826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataConcealMB = 0x7F000006,
869826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_ExtraDataInterlaceFormat = 0x7F000007,
8706eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_ExtraDataPortDef = 0x7F000008,
8716eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_ExtraDataMP2ExtnData = 0x7F000009,
8726eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_ExtraDataMP2UserData = 0x7F00000a,
8736eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal   OMX_ExtraDataVideoLTRInfo = 0x7F00000b,
874826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_QCOM_EXTRADATATYPE;
875826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
876826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct  OMX_STREAMINTERLACEFORMATTYPE {
877826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
878826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
879826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
880826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_BOOL bInterlaceFormat;
881826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nInterlaceFormats;
882826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_STREAMINTERLACEFORMAT;
883826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
884826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_INTERLACETYPE
885826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
886826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_InterlaceFrameProgressive,
887826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_InterlaceInterleaveFrameTopFieldFirst,
888826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_InterlaceInterleaveFrameBottomFieldFirst,
889826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_InterlaceFrameTopFieldFirst,
890826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev   OMX_InterlaceFrameBottomFieldFirst
891826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}OMX_INTERLACEs;
892826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
893826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
894826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_EXTRADATA_HEADER_SIZE 20
895826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
896826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
897826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * DivX Versions
898826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
899826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum  QOMX_VIDEO_DIVXFORMATTYPE {
900826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */
901826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormat311    = 0x02, /**< DivX 3.11 */
902826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormat4      = 0x04, /**< DivX 4 */
903826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormat5      = 0x08, /**< DivX 5 */
904826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormat6      = 0x10, /**< DivX 6 */
905826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000,
906826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000,
907826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF
908826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_DIVXFORMATTYPE;
909826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
910826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
911826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * DivX profile types, each profile indicates support for
912826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * various performance bounds.
913826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
914826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_DIVXPROFILETYPE {
915826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */
916826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DivXProfileMobile  = 0x02, /**< Mobile Profile */
917826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DivXProfileMT      = 0x04, /**< Mobile Theatre Profile */
918826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DivXProfileHT      = 0x08, /**< Home Theatre Profile */
919826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DivXProfileHD      = 0x10, /**< High Definition Profile */
920826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000,
921826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000,
922826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF
923826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_DIVXPROFILETYPE;
924826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
925826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
926826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * DivX Video Params
927826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
928826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  STRUCT MEMBERS:
929826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nSize      : Size of the structure in bytes
930826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nVersion   : OMX specification version information
931826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nPortIndex : Port that this structure applies to
932826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  eFormat    : Version of DivX stream / data
933826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  eProfile   : Profile of DivX stream / data
934826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
935826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_PARAM_DIVXTYPE {
936826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
937826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
938826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
939826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXFORMATTYPE eFormat;
940826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DIVXPROFILETYPE eProfile;
941826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_PARAM_DIVXTYPE;
942826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
943826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
944826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
945826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
946826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  VP Versions
947826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
948826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_VPFORMATTYPE {
949826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */
950826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormat6      = 0x02, /**< VP6 Video Format */
951826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormat7      = 0x04, /**< VP7 Video Format */
952826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormat8      = 0x08, /**< VP8 Video Format */
953826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000,
954826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000,
955826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF
956826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_VPFORMATTYPE;
957826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
958826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
959826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * VP profile types, each profile indicates support for various
960826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * encoding tools.
961826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
962826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_VPPROFILETYPE {
963826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileSimple   = 0x01, /**< Simple Profile, applies to VP6 only */
964826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */
965826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */
966826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */
967826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */
968826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */
969826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000,
970826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000,
971826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF
972826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_VPPROFILETYPE;
973826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
974826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
975826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * VP Video Params
976826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
977826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  STRUCT MEMBERS:
978826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nSize      : Size of the structure in bytes
979826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nVersion   : OMX specification version information
980826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nPortIndex : Port that this structure applies to
981826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  eFormat    : Format of VP stream / data
982826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  eProfile   : Profile or Version of VP stream / data
983826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
984826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_PARAM_VPTYPE {
985826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
986826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
987826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
988826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPFORMATTYPE eFormat;
989826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_VPPROFILETYPE eProfile;
990826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_PARAM_VPTYPE;
991826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
992826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
993826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Spark Versions
994826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
995826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_SPARKFORMATTYPE {
996826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */
997826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormat0      = 0x02, /**< Video Format Version 0 */
998826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormat1      = 0x04, /**< Video Format Version 1 */
999826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000,
1000826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000,
1001826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF
1002826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_SPARKFORMATTYPE;
1003826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1004826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/**
1005826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Spark Video Params
1006826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *
1007826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  STRUCT MEMBERS:
1008826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nSize      : Size of the structure in bytes
1009826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nVersion   : OMX specification version information
1010826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  nPortIndex : Port that this structure applies to
1011826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev *  eFormat    : Version of Spark stream / data
1012826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */
1013826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_PARAM_SPARKTYPE {
1014826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
1015826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1016826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
1017826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_SPARKFORMATTYPE eFormat;
1018826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_PARAM_SPARKTYPE;
1019826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1020826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1021826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES {
1022826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
1023826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1024826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
1025826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nNumOfInstances;
1026826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_QUERY_DECODER_INSTANCES;
1027826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1028826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_ENABLETYPE {
1029826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_BOOL bEnable;
1030826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_ENABLETYPE;
1031826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1032826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_EVENTS {
1033826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_EventIndexsettingChanged = OMX_EventVendorStartUnused
1034826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_EVENTS;
1035826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1036826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum QOMX_VIDEO_PICTURE_ORDER {
1037826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DISPLAY_ORDER = 0x1,
1038826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_DECODE_ORDER = 0x2
1039826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_PICTURE_ORDER;
1040826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1041826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_VIDEO_DECODER_PICTURE_ORDER {
1042826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
1043826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1044826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
1045826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_PICTURE_ORDER eOutputPictureOrder;
1046826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_DECODER_PICTURE_ORDER;
1047826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1048826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_INDEXEXTRADATATYPE {
1049826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nSize;
1050826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1051826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_U32 nPortIndex;
1052826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_BOOL bEnabled;
1053826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_INDEXTYPE nIndex;
1054826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_INDEXEXTRADATATYPE;
1055826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1056826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct QOMX_INDEXTIMESTAMPREORDER {
1057826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev	OMX_U32 nSize;
1058826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev	OMX_VERSIONTYPE nVersion;
1059826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev	OMX_U32 nPortIndex;
1060826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev	OMX_BOOL bEnable;
1061826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_INDEXTIMESTAMPREORDER;
1062826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1063826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_INDEX_PARAM_VIDEO_SYNCFRAMEDECODINGMODE "OMX.QCOM.index.param.video.SyncFrameDecodingMode"
1064826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData"
1065826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_QCOM_INDEX_PARAM_VIDEO_SLICEDELIVERYMODE "OMX.QCOM.index.param.SliceDeliveryMode"
1066826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1067826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum {
1068826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_CHECKERBOARD = 0,
1069826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_COLUMN_INTERLEAVE = 1,
1070826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_ROW_INTERLEAVE = 2,
1071826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_SIDE_BY_SIDE = 3,
1072826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_TOP_BOTTOM = 4,
1073826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_FRAME_PACKING_TEMPORAL = 5,
1074826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_FRAME_PACKING_ARRANGEMENT;
1075826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1076826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum {
1077826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CONTENT_UNSPECIFIED = 0,
1078826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CONTENT_LR_VIEW = 1,
1079826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    QOMX_VIDEO_CONTENT_RL_VIEW = 2,
1080826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} QOMX_VIDEO_CONTENT_INTERPRETATION;
1081826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1082e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan// A pointer to this struct is passed to OMX_SetParameter when the extension
1083e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan// index for the 'OMX.google.android.index.setVUIStreamRestrictFlag' extension
1084e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan// is given.
1085e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavantypedef struct QOMX_VUI_BITSTREAM_RESTRICT {
1086e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    OMX_U32 nSize;
1087e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    OMX_VERSIONTYPE nVersion;
1088e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    OMX_BOOL bEnable;
1089e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan} QOMX_VUI_BITSTREAM_RESTRICT;
1090e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan
109161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan/**
109261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Specifies the extended picture types. These values should be
109361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to
109461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * signal all pictures types which are allowed.
109561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan *
109661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * ENUMS:
109761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan *  H.264 Specific Picture Types:   IDR
109861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan */
109961a2c6a19dbd06a317a419623020e02056661876Praveen Chavantypedef enum QOMX_VIDEO_PICTURETYPE {
110061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000
110161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan} QOMX_VIDEO_PICTURETYPE;
1102dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
1103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef __cplusplus
1104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
1105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif /* __cplusplus */
1106826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1107826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif /* __OMX_QCOM_EXTENSIONS_H__ */
1108