1dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*--------------------------------------------------------------------------
26eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCopyright (c) 2009, The Linux Foundation. All rights reserved.
3dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
4dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandRedistribution and use in source and binary forms, with or without
5dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandmodification, are permitted provided that the following conditions are met:
6dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions of source code must retain the above copyright
7dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer.
8dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions in binary form must reproduce the above copyright
9dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer in the
10dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      documentation and/or other materials provided with the distribution.
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor
12dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      the names of its contributors may be used to endorse or promote
13dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      products derived from this software without specific prior written
14dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      permission.
15dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
16dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand--------------------------------------------------------------------------*/
28dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#ifndef __OMX_QCOM_EXTENSIONS_H__
29dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define __OMX_QCOM_EXTENSIONS_H__
30dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
31dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*============================================================================
32dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand*//** @file OMX_QCOMExtns.h
33dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  This header contains constants and type definitions that specify the
34dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  extensions added to the OpenMAX Vendor specific APIs.
35dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
36dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand*//*========================================================================*/
37dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
38dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
39dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//////////////////////////////////////////////////////////////////////////////
40dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//                             Include Files
41dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//////////////////////////////////////////////////////////////////////////////
42dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include "OMX_Core.h"
43dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include "OMX_Video.h"
44dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
45dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
46dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This extension is used to register mapping of a virtual
47dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * address to a physical address. This extension is a parameter
48dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * which can be set using the OMX_SetParameter macro. The data
49dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * pointer corresponding to this extension is
50dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_QCOM_MemMapEntry. This parameter is a 'write only'
51dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * parameter (Current value cannot be queried using
52dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_GetParameter macro).
53dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
54dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_EXTN_REGISTER_MMAP     "OMX.QCOM.index.param.register_mmap"
55dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
56dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
57dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the data pointer corresponding to
58dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * the OMX_QCOM_MMAP_REGISTER_EXTN extension. This parameter
59dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * must be set only 'after' populating a port with a buffer
60dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * using OMX_UseBuffer, wherein the data pointer of the buffer
61dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * corresponds to the virtual address as specified in this
62dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * structure.
63dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
64dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandstruct OMX_QCOM_PARAM_MEMMAPENTRYTYPE
65dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
66dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;              /** Size of the structure in bytes */
67dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
68dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;         /**< Port number the structure applies to */
69dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
70dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /**
71dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     * The virtual address of memory block
72dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     */
73dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U64 nVirtualAddress;
74dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
75dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /**
76dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     * The physical address corresponding to the virtual address. The physical
77dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     * address is contiguous for the entire valid range of the virtual
78dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     * address.
79dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     */
80dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U64 nPhysicalAddress;
81dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand};
82dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
83dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define QOMX_VIDEO_IntraRefreshRandom (OMX_VIDEO_IntraRefreshVendorStartUnused + 0)
84dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
85dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_PORTDEFN_EXTN   "OMX.QCOM.index.param.portdefn"
86dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* Allowed APIs on the above Index: OMX_GetParameter() and OMX_SetParameter() */
87dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
88dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOMMemoryRegion
89dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
90dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_MemRegionInvalid,
91dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_MemRegionEBI1,
92dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_MemRegionSMI,
93dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_MemRegionMax = 0X7FFFFFFF
94dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOMMemoryRegion;
95dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
96dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOMCacheAttr
97dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
98dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_CacheAttrNone,
99dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_CacheAttrWriteBack,
100dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_CacheAttrWriteThrough,
101dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_CacheAttrMAX = 0X7FFFFFFF
102dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOMCacheAttr;
103dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
104dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOMRectangle
105dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
106dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_S32 x;
107dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_S32 y;
108dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_S32 dx;
109dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_S32 dy;
110dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOMRectangle;
111dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
112dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** OMX_QCOMFramePackingFormat
113dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  * Input or output buffer format
114dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  */
115dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOMFramePackingFormat
116dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
117dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  /* 0 - unspecified
118dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   */
119dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_Unspecified,
120dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
121dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  /*  1 - Partial frames may be present OMX IL 1.1.1 Figure 2-10:
122dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  Case 1??Each Buffer Filled In Whole or In Part
123dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   */
124dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_Arbitrary,
125dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
126dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  /*  2 - Multiple complete frames per buffer (integer number)
127dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  OMX IL 1.1.1 Figure 2-11: Case 2�Each Buffer Filled with
128dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  Only Complete Frames of Data
129dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   */
130dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_CompleteFrames,
131dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
132dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  /*  3 - Only one complete frame per buffer, no partial frame
133dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  OMX IL 1.1.1 Figure 2-12: Case 3�Each Buffer Filled with
134dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  Only One Frame of Compressed Data. Usually at least one
135dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  complete unit of data will be delivered in a buffer for
136dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  uncompressed data formats.
137dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   */
138dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_OnlyOneCompleteFrame,
139dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
140dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  /*  4 - Only one complete subframe per buffer, no partial subframe
141dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  Example: In H264, one complete NAL per buffer, where one frame
142dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   *  can contatin multiple NAL
143dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   */
144dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_OnlyOneCompleteSubFrame,
145dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
146dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_QCOM_FramePacking_MAX = 0X7FFFFFFF
147dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOMFramePackingFormat;
148dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
149dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PARAM_PORTDEFINITIONTYPE {
150dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_U32 nSize;           /** Size of the structure in bytes */
151dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_VERSIONTYPE nVersion;/** OMX specification version information */
152dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
153dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
154dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand /** Platform specific memory region EBI1, SMI, etc.,*/
155dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_QCOMMemoryRegion nMemRegion;
156dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
157dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_QCOMCacheAttr nCacheAttr; /** Cache attributes */
158dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
159dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand /** Input or output buffer format */
160dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_U32 nFramePackingFormat;
161dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
162dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_PARAM_PORTDEFINITIONTYPE;
163dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
164dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_PLATFORMPVT_EXTN   "OMX.QCOM.index.param.platformprivate"
165dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** Allowed APIs on the above Index: OMX_SetParameter() */
166dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
167dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
168dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
169dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Enum for PMEM information */
170dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_PLATFORM_PRIVATE_PMEM = 0x1
171dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE;
172dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
173dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** IL client will set the following structure. A failure
174dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  code will be returned if component does not support the
175dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  value provided for 'type'.
176dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
177dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandstruct OMX_QCOM_PLATFORMPRIVATE_EXTN
178dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
179dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;        /** Size of the structure in bytes */
180dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion; /** OMX spec version information */
181dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;  /** Port number on which usebuffer extn is applied */
182dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
183dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Type of extensions should match an entry from
184dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
185dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    */
186dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
187dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand};
188dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
189dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO
190dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
191dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** pmem file descriptor */
192dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 pmem_fd;
193dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Offset from pmem device base address */
194dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 offset;
195dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO;
196dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
197dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PLATFORM_PRIVATE_ENTRY
198dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
199dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Entry type */
200dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
201dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
202dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Pointer to platform specific entry */
203dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    void* entry;
204dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_PLATFORM_PRIVATE_ENTRY;
205dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
206dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PLATFORM_PRIVATE_LIST
207dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
208dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Number of entries */
209dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nEntries;
210dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
211dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Pointer to array of platform specific entries *
212dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     * Contiguous block of OMX_QCOM_PLATFORM_PRIVATE_ENTRY element
213dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    */
214dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_PLATFORM_PRIVATE_ENTRY* entryList;
215dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_PLATFORM_PRIVATE_LIST;
216dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
217dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_FRAME_PACKING_FORMAT   "OMX.QCOM.index.param.framepackfmt"
218dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* Allowed API call: OMX_GetParameter() */
219dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* IL client can use this index to rerieve the list of frame formats *
220dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * supported by the component */
221dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
222dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_FRAME_PACKINGFORMAT_TYPE {
223dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
224dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
225dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
226dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nIndex;
227dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOMFramePackingFormat eframePackingFormat;
228dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_FRAME_PACKINGFORMAT_TYPE;
229dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
230dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
231dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
232dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Following is the enum for color formats supported on Qualcomm
233dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * MSMs YVU420SemiPlanar color format is not defined in OpenMAX
234dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * 1.1.1 and prior versions of OpenMAX specification.
235dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
236dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
237dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandenum OMX_QCOM_COLOR_FORMATTYPE
238dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
239dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
240dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** YVU420SemiPlanar: YVU planar format, organized with a first
241dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  plane containing Y pixels, and a second plane containing
242dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  interleaved V and U pixels. V and U pixels are sub-sampled
243dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  by a factor of two both horizontally and vertically.
244dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
245dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
246dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka,
247dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka,
248dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka
249dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand};
250dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
251dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandenum OMX_QCOM_VIDEO_CODINGTYPE
252dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
253dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** Codecs support by qualcomm which are not listed in OMX 1.1.x
254dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  spec
255dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *   */
256dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_VIDEO_CodingVC1  = 0x7FA30C00 ,
257dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_VIDEO_CodingWMV9 = 0x7FA30C01,
258dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_CodingDivx = 0x7FA30C02,     /**< Value when coding is Divx */
259dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_CodingSpark = 0x7FA30C03,     /**< Value when coding is Sorenson Spark */
260dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_CodingVp = 0x7FA30C04
261dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand};
262dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
263dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandenum OMX_QCOM_EXTN_INDEXTYPE
264dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
265dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /** Qcom proprietary extension index list */
266dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
267dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /* "OMX.QCOM.index.param.register_mmap" */
268dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexRegmmap = 0x7F000000,
269dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
270dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /* "OMX.QCOM.index.param.platformprivate" */
271dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexPlatformPvt = 0x7F000001,
272dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
273dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /* "OMX.QCOM.index.param.portdefn" */
274dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexPortDefn = 0x7F000002,
275dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
276dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /* "OMX.QCOM.index.param.framepackingformat" */
277dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexPortFramePackFmt = 0x7F000003,
278dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
279dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.Interlaced */
280dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexParamInterlaced = 0x7F000004,
281dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
282dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.config.interlaceformat */
283dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexConfigInterlaced = 0x7F000005,
284dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
285dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.syntaxhdr" */
286dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_IndexParamVideoSyntaxHdr = 0x7F000006,
287dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
288dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.config.intraperiod" */
289dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_IndexConfigVideoIntraperiod = 0x7F000007,
290dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
291dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.config.randomIntrarefresh" */
292dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_IndexConfigVideoIntraRefresh = 0x7F000008,
293dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
294dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.config.video.TemporalSpatialTradeOff" */
295dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_IndexConfigVideoTemporalSpatialTradeOff = 0x7F000009,
296dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
297dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.video.EncoderMode" */
298dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_IndexParamVideoEncoderMode = 0x7F00000A,
299dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
300dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.Divxtype */
301dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexParamVideoDivx = 0x7F00000B,
302dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
303dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.Sparktype */
304dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexParamVideoSpark = 0x7F00000C,
305dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
306dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    /*"OMX.QCOM.index.param.Vptype */
307dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexParamVideoVp = 0x7F00000D,
308dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
309dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QcomIndexQueryNumberOfVideoDecInstance = 0x7F00000E
310dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand};
311dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
312dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
313dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration used to define the video encoder modes
314dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
315dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * ENUMS:
316dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  EncoderModeDefault : Default video recording mode.
317dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       All encoder settings made through
318dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       OMX_SetParameter/OMX_SetConfig are applied. No
319dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       parameter is overridden.
320dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging
321dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   Service). This mode is similar to EncoderModeDefault
322dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   except that here the Rate control mode is overridden
323dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   internally and set as a variant of variable bitrate with
324dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   variable frame rate. After this mode is set if the IL
325dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   client tries to set OMX_VIDEO_CONTROLRATETYPE via
326dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   OMX_IndexParamVideoBitrate that would be rejected. For
327dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   this, client should set mode back to EncoderModeDefault
328dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   first and then change OMX_VIDEO_CONTROLRATETYPE.
329dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
330dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_VIDEO_ENCODERMODETYPE
331dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
332dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_EncoderModeDefault        = 0x00,
333dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_EncoderModeMMS            = 0x01,
334dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_EncoderModeMax            = 0x7FFFFFFF
335dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_ENCODERMODETYPE;
336dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
337dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
338dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure is used to set the video encoder mode.
339dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
340dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS:
341dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize      : Size of the structure in bytes
342dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion   : OMX specification version info
343dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex : Port that this structure applies to
344dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nMode : defines the video encoder mode
345dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
346dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE {
347dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
348dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
349dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
350dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_ENCODERMODETYPE nMode;
351dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_PARAM_ENCODERMODETYPE;
352dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
353dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
354dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
355dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried
356dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * during the loaded state.
357dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
358dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
359dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_SYNTAXHDRTYPE
360dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
361dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;           /** Size of the structure in bytes */
362dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
363dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
364dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nBytes;    	    /** The number of bytes filled in to the buffer */
365dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U8 data[1];          /** Buffer to store the header information */
366dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_SYNTAXHDRTYPE;
367dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
368dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
369dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
370dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set
371dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * dynamically during any state except the state invalid.  This is primarily
372dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * used for setting MaxQP from the application.  This is set on the out port.
373dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
374dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
375dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE
376dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
377dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;           /** Size of the structure in bytes */
378dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
379dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
380dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nTSFactor;       /** Temoral spatial tradeoff factor value in 0-100 */
381dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_TEMPORALSPATIALTYPE;
382dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
383dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
384dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
385dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set
386dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * dynamically during any state except the state invalid.  This is set on the out port.
387dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
388dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
389dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_INTRAPERIODTYPE
390dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
391dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;           /** Size of the structure in bytes */
392dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
393dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
394dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nIDRPeriod;      /** This specifies coding a frame as IDR after every nPFrames
395dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand			        of intra frames. If this parameter is set to 0, only the
396dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand				first frame of the encode session is an IDR frame. This
397dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand				field is ignored for non-AVC codecs and is used only for
398dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand				codecs that support IDR Period */
399dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPFrames;         /** The number of "P" frames between two "I" frames */
400dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nBFrames;         /** The number of "B" frames between two "I" frames */
401dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_INTRAPERIODTYPE;
402dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
403dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
404dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
405dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set
406dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * dynamically during any state except the state invalid. This is used for the buffer negotiation
407dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * with other clients.  This is set on the out port.
408dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
409dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE
410dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
411dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;            /** Size of the structure in bytes */
412dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion; /** OMX specification version information */
413dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;       /** Portindex which is extended by this structure */
414dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */
415dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE;
416dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
417dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
418dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
419dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set
420dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * dynamically during any state except the state invalid. This is primarily used for the dynamic/random
421dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * intrarefresh.  This is set on the out port.
422dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
423dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE
424dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
425dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;           /** Size of the structure in bytes */
426dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
427dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
428dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nRirMBs;         /** The number of MBs to be set for intrarefresh */
429dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE;
430dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
431dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
432dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
433dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure describes the parameters corresponding to the
434dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set
435dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * dynamically during any state except the state invalid. This is primarily
436dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * used for the min/max QP to be set from the application.  This
437dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * is set on the out port.
438dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
439dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE
440dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
441dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nSize;           /** Size of the structure in bytes */
442dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
443dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
444dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nMinQP;          /** The number for minimum quantization parameter */
445dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 nMaxQP;          /** The number for maximum quantization parameter */
446dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_VIDEO_CONFIG_QPRANGE;
447dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
448dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
449dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_VENDOR_EXTRADATATYPE  {
450dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
451dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nDataSize;
452dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U8  *pData;     // cdata (codec_data/extradata)
453dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_VENDOR_EXTRADATATYPE;
454dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
455dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_INDEXVENDORTYPE {
456dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_IndexVendorFileReadInputFilename = 0xFF000001,
457dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_IndexVendorParser3gpInputFilename = 0xFF000002,
458dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_IndexVendorVideoExtraData = 0xFF000003,
459dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_IndexVendorAudioExtraData = 0xFF000004
460dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_INDEXVENDORTYPE;
461dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
462dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOM_VC1RESOLUTIONTYPE
463dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
464dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1_PICTURE_RES_1x1,
465dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1_PICTURE_RES_2x1,
466dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1_PICTURE_RES_1x2,
467dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1_PICTURE_RES_2x2
468dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_VC1RESOLUTIONTYPE;
469dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
470dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOM_INTERLACETYPE
471dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
472dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceFrameProgressive,
473dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst,
474dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst,
475dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceFrameTopFieldFirst,
476dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceFrameBottomFieldFirst,
477dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceFieldTop,
478dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_InterlaceFieldBottom
479dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_INTERLACETYPE;
480dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
481dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE
482dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
483dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;           /** Size of the structure in bytes */
484dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;/** OMX specification version information */
485dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
486dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_BOOL bInterlace;  /** Interlace content **/
487dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_PARAM_VIDEO_INTERLACETYPE;
488dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
489dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_CONFIG_INTERLACETYPE
490dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
491dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
492dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
493dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
494dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nIndex;
495dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_QCOM_INTERLACETYPE eInterlaceType;
496dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_CONFIG_INTERLACETYPE;
497dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
498dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define MAX_PAN_SCAN_WINDOWS 4
499dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
500dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_PANSCAN
501dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
502dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32 numWindows;
503dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS];
504dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_PANSCAN;
505dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
506dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_EXTRADATA_FRAMEINFO
507dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
508dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   // common frame meta data. interlace related info removed
509dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_VIDEO_PICTURETYPE  ePicType;
510dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_INTERLACETYPE interlaceType;
511dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_PANSCAN       panScan;
512dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32                nConcealedMacroblocks;
513dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_EXTRADATA_FRAMEINFO;
514dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
515dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION
516dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
517dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   /** Frame Dimensions added to each YUV buffer */
518dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32   nDecWidth;  /** Width  rounded to multiple of 16 */
519dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32   nDecHeight; /** Height rounded to multiple of 16 */
520dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32   nActualWidth; /** Actual Frame Width */
521dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32   nActualHeight; /** Actual Frame Height */
522dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
523dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}OMX_QCOM_EXTRADATA_FRAMEDIMENSION;
524dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
525dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_H264EXTRADATA
526dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
527dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U64 seiTimeStamp;
528dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_H264EXTRADATA;
529dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
530dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_QCOM_VC1EXTRADATA
531dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
532dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32                     nVC1RangeY;
533dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_U32                     nVC1RangeUV;
534dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution;
535dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_VC1EXTRADATA;
536dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
537dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef union OMX_QCOM_EXTRADATA_CODEC_DATA
538dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
539dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_H264EXTRADATA h264ExtraData;
540dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_QCOM_VC1EXTRADATA vc1ExtraData;
541dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_EXTRADATA_CODEC_DATA;
542dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
543dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum OMX_QCOM_EXTRADATATYPE
544dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
545dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_ExtraDataFrameInfo = 0x7F000001,
546dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_ExtraDataH264 = 0x7F000002,
547dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_ExtraDataVC1 = 0x7F000003,
548dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_ExtraDataFrameDimension = 0x7F000004,
549dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand   OMX_ExtraDataVideoEncoderSliceInfo = 0x7F000005
550dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_QCOM_EXTRADATATYPE;
551dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
552dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
553dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_EXTRADATA_HEADER_SIZE 20
554dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
555dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
556dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * DivX Versions
557dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
558dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum  QOMX_VIDEO_DIVXFORMATTYPE {
559dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */
560dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormat311    = 0x02, /**< DivX 3.11 */
561dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormat4      = 0x04, /**< DivX 4 */
562dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormat5      = 0x08, /**< DivX 5 */
563dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormat6      = 0x10, /**< DivX 6 */
564dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000,
565dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000,
566dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF
567dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_DIVXFORMATTYPE;
568dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
569dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
570dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * DivX profile types, each profile indicates support for
571dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * various performance bounds.
572dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
573dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_VIDEO_DIVXPROFILETYPE {
574dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */
575dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DivXProfileMobile  = 0x02, /**< Mobile Profile */
576dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DivXProfileMT      = 0x04, /**< Mobile Theatre Profile */
577dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DivXProfileHT      = 0x08, /**< Home Theatre Profile */
578dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DivXProfileHD      = 0x10, /**< High Definition Profile */
579dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000,
580dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000,
581dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF
582dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_DIVXPROFILETYPE;
583dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
584dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
585dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * DivX Video Params
586dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
587dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
588dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize      : Size of the structure in bytes
589dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion   : OMX specification version information
590dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex : Port that this structure applies to
591dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eFormat    : Version of DivX stream / data
592dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eProfile   : Profile of DivX stream / data
593dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
594dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_PARAM_DIVXTYPE {
595dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
596dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
597dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
598dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXFORMATTYPE eFormat;
599dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_DIVXPROFILETYPE eProfile;
600dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_PARAM_DIVXTYPE;
601dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
602dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
603dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
604dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
605dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * VP Versions
606dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
607dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_VIDEO_VPFORMATTYPE {
608dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */
609dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormat6      = 0x02, /**< VP6 Video Format */
610dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormat7      = 0x04, /**< VP7 Video Format */
611dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormat8      = 0x08, /**< VP8 Video Format */
612dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000,
613dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000,
614dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF
615dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_VPFORMATTYPE;
616dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
617dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
618dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * VP profile types, each profile indicates support for various
619dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * encoding tools.
620dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
621dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_VIDEO_VPPROFILETYPE {
622dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileSimple   = 0x01, /**< Simple Profile, applies to VP6 only */
623dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */
624dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */
625dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */
626dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */
627dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */
628dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000,
629dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000,
630dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF
631dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_VPPROFILETYPE;
632dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
633dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
634dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * VP Video Params
635dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
636dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
637dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize      : Size of the structure in bytes
638dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion   : OMX specification version information
639dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex : Port that this structure applies to
640dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eFormat    : Format of VP stream / data
641dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eProfile   : Profile or Version of VP stream / data
642dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
643dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_PARAM_VPTYPE {
644dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
645dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
646dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
647dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPFORMATTYPE eFormat;
648dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_VPPROFILETYPE eProfile;
649dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_PARAM_VPTYPE;
650dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
651dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
652dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Spark Versions
653dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
654dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_VIDEO_SPARKFORMATTYPE {
655dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */
656dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormat0      = 0x02, /**< Video Format Version 0 */
657dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormat1      = 0x04, /**< Video Format Version 1 */
658dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000,
659dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000,
660dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF
661dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_SPARKFORMATTYPE;
662dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
663dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
664dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Spark Video Params
665dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
666dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
667dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize      : Size of the structure in bytes
668dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion   : OMX specification version information
669dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex : Port that this structure applies to
670dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eFormat    : Version of Spark stream / data
671dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
672dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_PARAM_SPARKTYPE {
673dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
674dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
675dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
676dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_VIDEO_SPARKFORMATTYPE eFormat;
677dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_PARAM_SPARKTYPE;
678dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
679dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
680dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES {
681dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
682dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
683dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
684dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nNumOfInstances;
685dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_VIDEO_QUERY_DECODER_INSTANCES;
686dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
687dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
688dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
689dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#endif /* __OMX_QCOM_EXTENSIONS_H__ */
690