1334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* ------------------------------------------------------------------
2334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (C) 1998-2009 PacketVideo
3334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
4334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Licensed under the Apache License, Version 2.0 (the "License");
5334de520b0369215b7931fefa424fb92d295f0ebJames Dong * you may not use this file except in compliance with the License.
6334de520b0369215b7931fefa424fb92d295f0ebJames Dong * You may obtain a copy of the License at
7334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
8334de520b0369215b7931fefa424fb92d295f0ebJames Dong *      http://www.apache.org/licenses/LICENSE-2.0
9334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
10334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Unless required by applicable law or agreed to in writing, software
11334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distributed under the License is distributed on an "AS IS" BASIS,
12334de520b0369215b7931fefa424fb92d295f0ebJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13334de520b0369215b7931fefa424fb92d295f0ebJames Dong * express or implied.
14334de520b0369215b7931fefa424fb92d295f0ebJames Dong * See the License for the specific language governing permissions
15334de520b0369215b7931fefa424fb92d295f0ebJames Dong * and limitations under the License.
16334de520b0369215b7931fefa424fb92d295f0ebJames Dong * -------------------------------------------------------------------
17334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
18334de520b0369215b7931fefa424fb92d295f0ebJames Dong/*
19334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (c) 2008 The Khronos Group Inc.
20334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
21334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Permission is hereby granted, free of charge, to any person obtaining
22334de520b0369215b7931fefa424fb92d295f0ebJames Dong * a copy of this software and associated documentation files (the
23334de520b0369215b7931fefa424fb92d295f0ebJames Dong * "Software"), to deal in the Software without restriction, including
24334de520b0369215b7931fefa424fb92d295f0ebJames Dong * without limitation the rights to use, copy, modify, merge, publish,
25334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distribute, sublicense, and/or sell copies of the Software, and to
26334de520b0369215b7931fefa424fb92d295f0ebJames Dong * permit persons to whom the Software is furnished to do so, subject
27334de520b0369215b7931fefa424fb92d295f0ebJames Dong * to the following conditions:
28334de520b0369215b7931fefa424fb92d295f0ebJames Dong * The above copyright notice and this permission notice shall be included
29334de520b0369215b7931fefa424fb92d295f0ebJames Dong * in all copies or substantial portions of the Software.
30334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
31334de520b0369215b7931fefa424fb92d295f0ebJames Dong * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32334de520b0369215b7931fefa424fb92d295f0ebJames Dong * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33334de520b0369215b7931fefa424fb92d295f0ebJames Dong * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34334de520b0369215b7931fefa424fb92d295f0ebJames Dong * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35334de520b0369215b7931fefa424fb92d295f0ebJames Dong * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36334de520b0369215b7931fefa424fb92d295f0ebJames Dong * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37334de520b0369215b7931fefa424fb92d295f0ebJames Dong * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
39334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
40334de520b0369215b7931fefa424fb92d295f0ebJames Dong
41334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_Component.h - OpenMax IL version 1.1.2
42334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  The OMX_Component header file contains the definitions used to define
43334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  the public interface of a component.  This header file is intended to
44334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  be used by both the application and the component.
45334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
46334de520b0369215b7931fefa424fb92d295f0ebJames Dong
47334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_Component_h
48334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_Component_h
49334de520b0369215b7931fefa424fb92d295f0ebJames Dong
50334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
51334de520b0369215b7931fefa424fb92d295f0ebJames Dongextern "C" {
52334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
53334de520b0369215b7931fefa424fb92d295f0ebJames Dong
54334de520b0369215b7931fefa424fb92d295f0ebJames Dong
55334de520b0369215b7931fefa424fb92d295f0ebJames Dong
56334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* Each OMX header must include all required header files to allow the
57334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  header to compile without errors.  The includes below are required
58334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  for this header file to compile successfully
59334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
60334de520b0369215b7931fefa424fb92d295f0ebJames Dong
61334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_Audio.h>
62334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_Video.h>
63334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_Image.h>
64334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_Other.h>
65334de520b0369215b7931fefa424fb92d295f0ebJames Dong
66334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup comp */
67334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_PORTDOMAINTYPE {
68334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainAudio,
69334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainVideo,
70334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainImage,
71334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainOther,
72334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
73334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
74334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PortDomainMax = 0x7ffffff
75334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PORTDOMAINTYPE;
76334de520b0369215b7931fefa424fb92d295f0ebJames Dong
77334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup comp */
78334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_PORTDEFINITIONTYPE {
79334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;                 /**< Size of the structure in bytes */
80334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
81334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;            /**< Port number the structure applies to */
82334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_DIRTYPE eDir;              /**< Direction (input or output) of this port */
83334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nBufferCountActual;    /**< The actual number of buffers allocated on this port */
84334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nBufferCountMin;       /**< The minimum number of buffers this port requires */
85334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nBufferSize;           /**< Size, in bytes, for buffers to be used for this channel */
86334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bEnabled;             /**< Ports default to enabled and are enabled/disabled by
87334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        OMX_CommandPortEnable/OMX_CommandPortDisable.
88334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        When disabled a port is unpopulated. A disabled port
89334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        is not populated with buffers on a transition to IDLE. */
90334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bPopulated;           /**< Port is populated with all of its buffers as indicated by
91334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        nBufferCountActual. A disabled port is always unpopulated.
92334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        An enabled port is populated on a transition to OMX_StateIdle
93334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                        and unpopulated on a transition to loaded. */
94334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PORTDOMAINTYPE eDomain;    /**< Domain of the port. Determines the contents of metadata below. */
95334de520b0369215b7931fefa424fb92d295f0ebJames Dong    union {
96334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_AUDIO_PORTDEFINITIONTYPE audio;
97334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_VIDEO_PORTDEFINITIONTYPE video;
98334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IMAGE_PORTDEFINITIONTYPE image;
99334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_OTHER_PORTDEFINITIONTYPE other;
100334de520b0369215b7931fefa424fb92d295f0ebJames Dong    } format;
101334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bBuffersContiguous;
102334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nBufferAlignment;
103334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_PORTDEFINITIONTYPE;
104334de520b0369215b7931fefa424fb92d295f0ebJames Dong
105334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup comp */
106334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_U32TYPE {
107334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;                    /**< Size of this structure, in Bytes */
108334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */
109334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;               /**< port that this structure applies to */
110334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nU32;                     /**< U32 value */
111334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_U32TYPE;
112334de520b0369215b7931fefa424fb92d295f0ebJames Dong
113334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup rpm */
114334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_SUSPENSIONPOLICYTYPE {
115334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
116334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionEnabled,  /**< Suspension allowed */
117334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
118334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
119334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionPolicyMax = 0x7fffffff
120334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_SUSPENSIONPOLICYTYPE;
121334de520b0369215b7931fefa424fb92d295f0ebJames Dong
122334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup rpm */
123334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
124334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
125334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
126334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SUSPENSIONPOLICYTYPE ePolicy;
127334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_SUSPENSIONPOLICYTYPE;
128334de520b0369215b7931fefa424fb92d295f0ebJames Dong
129334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup rpm */
130334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_SUSPENSIONTYPE {
131334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NotSuspended, /**< component is not suspended */
132334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_Suspended,    /**< component is suspended */
133334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
134334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
135334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SuspendMax = 0x7FFFFFFF
136334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_SUSPENSIONTYPE;
137334de520b0369215b7931fefa424fb92d295f0ebJames Dong
138334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup rpm */
139334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_SUSPENSIONTYPE {
140334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
141334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
142334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_SUSPENSIONTYPE eType;
143334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_SUSPENSIONTYPE ;
144334de520b0369215b7931fefa424fb92d295f0ebJames Dong
145334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_CONFIG_BOOLEANTYPE {
146334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
147334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
148334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bEnabled;
149334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_CONFIG_BOOLEANTYPE;
150334de520b0369215b7931fefa424fb92d295f0ebJames Dong
151334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* Parameter specifying the content uri to use. */
152334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup cp */
153334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_CONTENTURITYPE
154334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
155334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;                      /**< size of the structure in bytes, including
156334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                             actual URI name */
157334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;           /**< OMX specification version information */
158334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 contentURI[1];               /**< The URI name */
159334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_CONTENTURITYPE;
160334de520b0369215b7931fefa424fb92d295f0ebJames Dong
161334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* Parameter specifying the pipe to use. */
162334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup cp */
163334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_CONTENTPIPETYPE
164334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
165334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;              /**< size of the structure in bytes */
166334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
167334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_HANDLETYPE hPipe;       /**< The pipe handle*/
168334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_CONTENTPIPETYPE;
169334de520b0369215b7931fefa424fb92d295f0ebJames Dong
170334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup rpm */
171334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_RESOURCECONCEALMENTTYPE {
172334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;             /**< size of the structure in bytes */
173334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
174334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
175334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                            methods (like degrading algorithm quality to
176334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                            lower resource consumption or functional bypass)
177334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                            on a component as a resolution to resource conflicts. */
178334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_RESOURCECONCEALMENTTYPE;
179334de520b0369215b7931fefa424fb92d295f0ebJames Dong
180334de520b0369215b7931fefa424fb92d295f0ebJames Dong
181334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
182334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_METADATACHARSETTYPE {
183334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetUnknown = 0,
184334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetASCII,
185334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetBinary,
186334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetCodePage1252,
187334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetUTF8,
188334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetJavaConformantUTF8,
189334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetUTF7,
190334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetImapUTF7,
191334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetUTF16LE,
192334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetUTF16BE,
193334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetGB12345,
194334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetHZGB2312,
195334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetGB2312,
196334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetGB18030,
197334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetGBK,
198334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetBig5,
199334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88591,
200334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88592,
201334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88593,
202334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88594,
203334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88595,
204334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88596,
205334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88597,
206334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88598,
207334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO88599,
208334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO885910,
209334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO885913,
210334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO885914,
211334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO885915,
212334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetShiftJIS,
213334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO2022JP,
214334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISO2022JP1,
215334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetISOEUCJP,
216334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetSMS7Bit,
217334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
218334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
219334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
220334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_METADATACHARSETTYPE;
221334de520b0369215b7931fefa424fb92d295f0ebJames Dong
222334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
223334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_METADATASCOPETYPE
224334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
225334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeAllLevels,
226334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeTopLevel,
227334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopePortLevel,
228334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeNodeLevel,
229334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
230334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
231334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataScopeTypeMax = 0x7fffffff
232334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_METADATASCOPETYPE;
233334de520b0369215b7931fefa424fb92d295f0ebJames Dong
234334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
235334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_METADATASEARCHMODETYPE
236334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
237334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchValueSizeByIndex,
238334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchItemByIndex,
239334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchNextItemByKey,
240334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
241334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
242334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_MetadataSearchTypeMax = 0x7fffffff
243334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_METADATASEARCHMODETYPE;
244334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
245334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
246334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
247334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
248334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
249334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATASCOPETYPE eScopeMode;
250334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nScopeSpecifier;
251334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nMetadataItemCount;
252334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_CONFIG_METADATAITEMCOUNTTYPE;
253334de520b0369215b7931fefa424fb92d295f0ebJames Dong
254334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
255334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_CONFIG_METADATAITEMTYPE
256334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
257334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
258334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
259334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATASCOPETYPE eScopeMode;
260334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nScopeSpecifier;
261334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nMetadataItemIndex;
262334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATASEARCHMODETYPE eSearchMode;
263334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATACHARSETTYPE eKeyCharset;
264334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nKeySizeUsed;
265334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nKey[128];
266334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATACHARSETTYPE eValueCharset;
267334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_STRING sLanguageCountry;
268334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nValueMaxSize;
269334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nValueSizeUsed;
270334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nValue[1];
271334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_CONFIG_METADATAITEMTYPE;
272334de520b0369215b7931fefa424fb92d295f0ebJames Dong
273334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* @ingroup metadata */
274334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
275334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
276334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
277334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
278334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bAllKeys;
279334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nParentNodeID;
280334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nNumNodes;
281334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
282334de520b0369215b7931fefa424fb92d295f0ebJames Dong
283334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
284334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
285334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
286334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
287334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
288334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bAllKeys;
289334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nParentNodeID;
290334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nNodeIndex;
291334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nNodeID;
292334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_STRING cNodeName;
293334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bIsLeafType;
294334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_CONFIG_CONTAINERNODEIDTYPE;
295334de520b0369215b7931fefa424fb92d295f0ebJames Dong
296334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @ingroup metadata */
297334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_PARAM_METADATAFILTERTYPE
298334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
299334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
300334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
301334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bAllKeys;	/* if true then this structure refers to all keys and
302334de520b0369215b7931fefa424fb92d295f0ebJames Dong                         * the three key fields below are ignored */
303334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_METADATACHARSETTYPE eKeyCharset;
304334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nKeySizeUsed;
305334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8   nKey [128];
306334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nLanguageCountrySizeUsed;
307334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nLanguageCountry[128];
308334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bEnabled;	/* if true then key is part of filter (e.g.
309334de520b0369215b7931fefa424fb92d295f0ebJames Dong                         * retained for query later). If false then
310334de520b0369215b7931fefa424fb92d295f0ebJames Dong                         * key is not part of filter */
311334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_PARAM_METADATAFILTERTYPE;
312334de520b0369215b7931fefa424fb92d295f0ebJames Dong
313334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_HANDLETYPE structure defines the component handle.  The component
314334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  handle is used to access all of the component's public methods and also
315334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  contains pointers to the component's private data area.  The component
316334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  handle is initialized by the OMX core (with help from the component)
317334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  during the process of loading the component.  After the component is
318334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  successfully loaded, the application can safely access any of the
319334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  component's public functions (although some may return an error because
320334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  the state is inappropriate for the access).
321334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
322334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  @ingroup comp
323334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
324334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_COMPONENTTYPE
325334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
326334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** The size of this structure, in bytes.  It is the responsibility
327334de520b0369215b7931fefa424fb92d295f0ebJames Dong        of the allocator of this structure to fill in this value.  Since
328334de520b0369215b7931fefa424fb92d295f0ebJames Dong        this structure is allocated by the GetHandle function, this
329334de520b0369215b7931fefa424fb92d295f0ebJames Dong        function will fill in this value. */
330334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
331334de520b0369215b7931fefa424fb92d295f0ebJames Dong
332334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** nVersion is the version of the OMX specification that the structure
333334de520b0369215b7931fefa424fb92d295f0ebJames Dong        is built against.  It is the responsibility of the creator of this
334334de520b0369215b7931fefa424fb92d295f0ebJames Dong        structure to initialize this value and every user of this structure
335334de520b0369215b7931fefa424fb92d295f0ebJames Dong        should verify that it knows how to use the exact version of
336334de520b0369215b7931fefa424fb92d295f0ebJames Dong        this structure found herein. */
337334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
338334de520b0369215b7931fefa424fb92d295f0ebJames Dong
339334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** pComponentPrivate is a pointer to the component private data area.
340334de520b0369215b7931fefa424fb92d295f0ebJames Dong        This member is allocated and initialized by the component when the
341334de520b0369215b7931fefa424fb92d295f0ebJames Dong        component is first loaded.  The application should not access this
342334de520b0369215b7931fefa424fb92d295f0ebJames Dong        data area. */
343334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PTR pComponentPrivate;
344334de520b0369215b7931fefa424fb92d295f0ebJames Dong
345334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** pApplicationPrivate is a pointer that is a parameter to the
346334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_GetHandle method, and contains an application private value
347334de520b0369215b7931fefa424fb92d295f0ebJames Dong        provided by the IL client.  This application private data is
348334de520b0369215b7931fefa424fb92d295f0ebJames Dong        returned to the IL Client by OMX in all callbacks */
349334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_PTR pApplicationPrivate;
350334de520b0369215b7931fefa424fb92d295f0ebJames Dong
351334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
352334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the GetComponentVersion method.
353334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
354334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*GetComponentVersion)(
355334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
356334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_STRING pComponentName,
357334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
358334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
359334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_UUIDTYPE* pComponentUUID);
360334de520b0369215b7931fefa424fb92d295f0ebJames Dong
361334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_SendCommand in OMX_core.h or the OMX IL
362334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the SendCommand method.
363334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
364334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*SendCommand)(
365334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
366334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_COMMANDTYPE Cmd,
367334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_U32 nParam1,
368334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_PTR pCmdData);
369334de520b0369215b7931fefa424fb92d295f0ebJames Dong
370334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_GetParameter in OMX_core.h or the OMX IL
371334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the GetParameter method.
372334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
373334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*GetParameter)(
374334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
375334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_INDEXTYPE nParamIndex,
376334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_INOUT OMX_PTR pComponentParameterStructure);
377334de520b0369215b7931fefa424fb92d295f0ebJames Dong
378334de520b0369215b7931fefa424fb92d295f0ebJames Dong
379334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_SetParameter in OMX_core.h or the OMX IL
380334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the SetParameter method.
381334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
382334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*SetParameter)(
383334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
384334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_INDEXTYPE nIndex,
385334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_PTR pComponentParameterStructure);
386334de520b0369215b7931fefa424fb92d295f0ebJames Dong
387334de520b0369215b7931fefa424fb92d295f0ebJames Dong
388334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_GetConfig in OMX_core.h or the OMX IL
389334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the GetConfig method.
390334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
391334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*GetConfig)(
392334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
393334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_INDEXTYPE nIndex,
394334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_INOUT OMX_PTR pComponentConfigStructure);
395334de520b0369215b7931fefa424fb92d295f0ebJames Dong
396334de520b0369215b7931fefa424fb92d295f0ebJames Dong
397334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_SetConfig in OMX_core.h or the OMX IL
398334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the SetConfig method.
399334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
400334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*SetConfig)(
401334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
402334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_INDEXTYPE nIndex,
403334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_PTR pComponentConfigStructure);
404334de520b0369215b7931fefa424fb92d295f0ebJames Dong
405334de520b0369215b7931fefa424fb92d295f0ebJames Dong
406334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
407334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the GetExtensionIndex method.
408334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
409334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*GetExtensionIndex)(
410334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
411334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_STRING cParameterName,
412334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_INDEXTYPE* pIndexType);
413334de520b0369215b7931fefa424fb92d295f0ebJames Dong
414334de520b0369215b7931fefa424fb92d295f0ebJames Dong
415334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_GetState in OMX_core.h or the OMX IL
416334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the GetState method.
417334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
418334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*GetState)(
419334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
420334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_OUT OMX_STATETYPE* pState);
421334de520b0369215b7931fefa424fb92d295f0ebJames Dong
422334de520b0369215b7931fefa424fb92d295f0ebJames Dong
423334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** The ComponentTunnelRequest method will interact with another OMX
424334de520b0369215b7931fefa424fb92d295f0ebJames Dong        component to determine if tunneling is possible and to setup the
425334de520b0369215b7931fefa424fb92d295f0ebJames Dong        tunneling.  The return codes for this method can be used to
426334de520b0369215b7931fefa424fb92d295f0ebJames Dong        determine if tunneling is not possible, or if tunneling is not
427334de520b0369215b7931fefa424fb92d295f0ebJames Dong        supported.
428334de520b0369215b7931fefa424fb92d295f0ebJames Dong
429334de520b0369215b7931fefa424fb92d295f0ebJames Dong        Base profile components (i.e. non-interop) do not support this
430334de520b0369215b7931fefa424fb92d295f0ebJames Dong        method and should return OMX_ErrorNotImplemented
431334de520b0369215b7931fefa424fb92d295f0ebJames Dong
432334de520b0369215b7931fefa424fb92d295f0ebJames Dong        The interop profile component MUST support tunneling to another
433334de520b0369215b7931fefa424fb92d295f0ebJames Dong        interop profile component with a compatible port parameters.
434334de520b0369215b7931fefa424fb92d295f0ebJames Dong        A component may also support proprietary communication.
435334de520b0369215b7931fefa424fb92d295f0ebJames Dong
436334de520b0369215b7931fefa424fb92d295f0ebJames Dong        If proprietary communication is supported the negotiation of
437334de520b0369215b7931fefa424fb92d295f0ebJames Dong        proprietary communication is done outside of OMX in a vendor
438334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specific way. It is only required that the proper result be
439334de520b0369215b7931fefa424fb92d295f0ebJames Dong        returned and the details of how the setup is done is left
440334de520b0369215b7931fefa424fb92d295f0ebJames Dong        to the component implementation.
441334de520b0369215b7931fefa424fb92d295f0ebJames Dong
442334de520b0369215b7931fefa424fb92d295f0ebJames Dong        When this method is invoked when nPort in an output port, the
443334de520b0369215b7931fefa424fb92d295f0ebJames Dong        component will:
444334de520b0369215b7931fefa424fb92d295f0ebJames Dong        1.  Populate the pTunnelSetup structure with the output port's
445334de520b0369215b7931fefa424fb92d295f0ebJames Dong            requirements and constraints for the tunnel.
446334de520b0369215b7931fefa424fb92d295f0ebJames Dong
447334de520b0369215b7931fefa424fb92d295f0ebJames Dong        When this method is invoked when nPort in an input port, the
448334de520b0369215b7931fefa424fb92d295f0ebJames Dong        component will:
449334de520b0369215b7931fefa424fb92d295f0ebJames Dong        1.  Query the necessary parameters from the output port to
450334de520b0369215b7931fefa424fb92d295f0ebJames Dong            determine if the ports are compatible for tunneling
451334de520b0369215b7931fefa424fb92d295f0ebJames Dong        2.  If the ports are compatible, the component should store
452334de520b0369215b7931fefa424fb92d295f0ebJames Dong            the tunnel step provided by the output port
453334de520b0369215b7931fefa424fb92d295f0ebJames Dong        3.  Determine which port (either input or output) is the buffer
454334de520b0369215b7931fefa424fb92d295f0ebJames Dong            supplier, and call OMX_SetParameter on the output port to
455334de520b0369215b7931fefa424fb92d295f0ebJames Dong            indicate this selection.
456334de520b0369215b7931fefa424fb92d295f0ebJames Dong
457334de520b0369215b7931fefa424fb92d295f0ebJames Dong        The component will return from this call within 5 msec.
458334de520b0369215b7931fefa424fb92d295f0ebJames Dong
459334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] hComp
460334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Handle of the component to be accessed.  This is the component
461334de520b0369215b7931fefa424fb92d295f0ebJames Dong            handle returned by the call to the OMX_GetHandle method.
462334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] nPort
463334de520b0369215b7931fefa424fb92d295f0ebJames Dong            nPort is used to select the port on the component to be used
464334de520b0369215b7931fefa424fb92d295f0ebJames Dong            for tunneling.
465334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] hTunneledComp
466334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Handle of the component to tunnel with.  This is the component
467334de520b0369215b7931fefa424fb92d295f0ebJames Dong            handle returned by the call to the OMX_GetHandle method.  When
468334de520b0369215b7931fefa424fb92d295f0ebJames Dong            this parameter is 0x0 the component should setup the port for
469334de520b0369215b7931fefa424fb92d295f0ebJames Dong            communication with the application / IL Client.
470334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] nPortOutput
471334de520b0369215b7931fefa424fb92d295f0ebJames Dong            nPortOutput is used indicate the port the component should
472334de520b0369215b7931fefa424fb92d295f0ebJames Dong            tunnel with.
473334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] pTunnelSetup
474334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Pointer to the tunnel setup structure.  When nPort is an output port
475334de520b0369215b7931fefa424fb92d295f0ebJames Dong            the component should populate the fields of this structure.  When
476334de520b0369215b7931fefa424fb92d295f0ebJames Dong            When nPort is an input port the component should review the setup
477334de520b0369215b7931fefa424fb92d295f0ebJames Dong            provided by the component with the output port.
478334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @return OMX_ERRORTYPE
479334de520b0369215b7931fefa424fb92d295f0ebJames Dong            If the command successfully executes, the return code will be
480334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
481334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup tun
482334de520b0369215b7931fefa424fb92d295f0ebJames Dong    */
483334de520b0369215b7931fefa424fb92d295f0ebJames Dong
484334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*ComponentTunnelRequest)(
485334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IN  OMX_HANDLETYPE hComp,
486334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IN  OMX_U32 nPort,
487334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IN  OMX_HANDLETYPE hTunneledComp,
488334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IN  OMX_U32 nTunneledPort,
489334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_INOUT  OMX_TUNNELSETUPTYPE* pTunnelSetup);
490334de520b0369215b7931fefa424fb92d295f0ebJames Dong
491334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
492334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the UseBuffer method.
493334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup buf
494334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
495334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*UseBuffer)(
496334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_HANDLETYPE hComponent,
497334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
498334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U32 nPortIndex,
499334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_PTR pAppPrivate,
500334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U32 nSizeBytes,
501334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U8* pBuffer);
502334de520b0369215b7931fefa424fb92d295f0ebJames Dong
503334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
504334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the AllocateBuffer method.
505334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup buf
506334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
507334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*AllocateBuffer)(
508334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_HANDLETYPE hComponent,
509334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
510334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U32 nPortIndex,
511334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_PTR pAppPrivate,
512334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U32 nSizeBytes);
513334de520b0369215b7931fefa424fb92d295f0ebJames Dong
514334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
515334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the FreeBuffer method.
516334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup buf
517334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
518334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*FreeBuffer)(
519334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
520334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_U32 nPortIndex,
521334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
522334de520b0369215b7931fefa424fb92d295f0ebJames Dong
523334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
524334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the EmptyThisBuffer method.
525334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup buf
526334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
527334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*EmptyThisBuffer)(
528334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
529334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
530334de520b0369215b7931fefa424fb92d295f0ebJames Dong
531334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
532334de520b0369215b7931fefa424fb92d295f0ebJames Dong        specification for details on the FillThisBuffer method.
533334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @ingroup buf
534334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
535334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*FillThisBuffer)(
536334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
537334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
538334de520b0369215b7931fefa424fb92d295f0ebJames Dong
539334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** The SetCallbacks method is used by the core to specify the callback
540334de520b0369215b7931fefa424fb92d295f0ebJames Dong        structure from the application to the component.  This is a blocking
541334de520b0369215b7931fefa424fb92d295f0ebJames Dong        call.  The component will return from this call within 5 msec.
542334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] hComponent
543334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Handle of the component to be accessed.  This is the component
544334de520b0369215b7931fefa424fb92d295f0ebJames Dong            handle returned by the call to the GetHandle function.
545334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] pCallbacks
546334de520b0369215b7931fefa424fb92d295f0ebJames Dong            pointer to an OMX_CALLBACKTYPE structure used to provide the
547334de520b0369215b7931fefa424fb92d295f0ebJames Dong            callback information to the component
548334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] pAppData
549334de520b0369215b7931fefa424fb92d295f0ebJames Dong            pointer to an application defined value.  It is anticipated that
550334de520b0369215b7931fefa424fb92d295f0ebJames Dong            the application will pass a pointer to a data structure or a "this
551334de520b0369215b7931fefa424fb92d295f0ebJames Dong            pointer" in this area to allow the callback (in the application)
552334de520b0369215b7931fefa424fb92d295f0ebJames Dong            to determine the context of the call
553334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @return OMX_ERRORTYPE
554334de520b0369215b7931fefa424fb92d295f0ebJames Dong            If the command successfully executes, the return code will be
555334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
556334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
557334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*SetCallbacks)(
558334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent,
559334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_CALLBACKTYPE* pCallbacks,
560334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_PTR pAppData);
561334de520b0369215b7931fefa424fb92d295f0ebJames Dong
562334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** ComponentDeInit method is used to deinitialize the component
563334de520b0369215b7931fefa424fb92d295f0ebJames Dong        providing a means to free any resources allocated at component
564334de520b0369215b7931fefa424fb92d295f0ebJames Dong        initialization.  NOTE:  After this call the component handle is
565334de520b0369215b7931fefa424fb92d295f0ebJames Dong        not valid for further use.
566334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @param [in] hComponent
567334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Handle of the component to be accessed.  This is the component
568334de520b0369215b7931fefa424fb92d295f0ebJames Dong            handle returned by the call to the GetHandle function.
569334de520b0369215b7931fefa424fb92d295f0ebJames Dong        @return OMX_ERRORTYPE
570334de520b0369215b7931fefa424fb92d295f0ebJames Dong            If the command successfully executes, the return code will be
571334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
572334de520b0369215b7931fefa424fb92d295f0ebJames Dong     */
573334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*ComponentDeInit)(
574334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN  OMX_HANDLETYPE hComponent);
575334de520b0369215b7931fefa424fb92d295f0ebJames Dong
576334de520b0369215b7931fefa424fb92d295f0ebJames Dong    /** @ingroup buf */
577334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*UseEGLImage)(
578334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_HANDLETYPE hComponent,
579334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
580334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_U32 nPortIndex,
581334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN OMX_PTR pAppPrivate,
582334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_IN void* eglImage);
583334de520b0369215b7931fefa424fb92d295f0ebJames Dong
584334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_ERRORTYPE (*ComponentRoleEnum)(
585334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_IN OMX_HANDLETYPE hComponent,
586334de520b0369215b7931fefa424fb92d295f0ebJames Dong		OMX_OUT OMX_U8 *cRole,
587334de520b0369215b7931fefa424fb92d295f0ebJames Dong		OMX_IN OMX_U32 nIndex);
588334de520b0369215b7931fefa424fb92d295f0ebJames Dong
589334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_COMPONENTTYPE;
590334de520b0369215b7931fefa424fb92d295f0ebJames Dong
591334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
592334de520b0369215b7931fefa424fb92d295f0ebJames Dong}
593334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
594334de520b0369215b7931fefa424fb92d295f0ebJames Dong
595334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
596334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* File EOF */
597