1e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/* ------------------------------------------------------------------
2e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (C) 1998-2009 PacketVideo
3e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
4e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Licensed under the Apache License, Version 2.0 (the "License");
5e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * you may not use this file except in compliance with the License.
6e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * You may obtain a copy of the License at
7e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
8e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *      http://www.apache.org/licenses/LICENSE-2.0
9e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
10e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Unless required by applicable law or agreed to in writing, software
11e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * distributed under the License is distributed on an "AS IS" BASIS,
12e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * express or implied.
14e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * See the License for the specific language governing permissions
15e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * and limitations under the License.
16e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * -------------------------------------------------------------------
17e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
19e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (c) 2008 The Khronos Group Inc.
20e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * a copy of this software and associated documentation files (the
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * "Software"), to deal in the Software without restriction, including
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish,
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject
27e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * to the following conditions:
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The above copyright notice and this permission notice shall be included
29e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * in all copies or substantial portions of the Software.
30e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** OMX_Component.h - OpenMax IL version 1.1.2
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  The OMX_Component header file contains the definitions used to define
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  the public interface of a component.  This header file is intended to
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  be used by both the application and the component.
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_Component_h
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_Component_h
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C" {
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Each OMX header must include all required header files to allow the
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  header to compile without errors.  The includes below are required
58e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  for this header file to compile successfully
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Audio.h>
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Video.h>
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Image.h>
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Other.h>
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */
67e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef enum OMX_PORTDOMAINTYPE {
68e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_PortDomainAudio,
69e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_PortDomainVideo,
70e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_PortDomainImage,
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PortDomainOther,
72e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PortDomainMax = 0x7ffffff
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PORTDOMAINTYPE;
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_PORTDEFINITIONTYPE {
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                 /**< Size of the structure in bytes */
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;            /**< Port number the structure applies to */
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_DIRTYPE eDir;              /**< Direction (input or output) of this port */
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBufferCountActual;    /**< The actual number of buffers allocated on this port */
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBufferCountMin;       /**< The minimum number of buffers this port requires */
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBufferSize;           /**< Size, in bytes, for buffers to be used for this channel */
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnabled;             /**< Ports default to enabled and are enabled/disabled by
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        OMX_CommandPortEnable/OMX_CommandPortDisable.
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        When disabled a port is unpopulated. A disabled port
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        is not populated with buffers on a transition to IDLE. */
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bPopulated;           /**< Port is populated with all of its buffers as indicated by
91e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen                                        nBufferCountActual. A disabled port is always unpopulated.
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        An enabled port is populated on a transition to OMX_StateIdle
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        and unpopulated on a transition to loaded. */
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PORTDOMAINTYPE eDomain;    /**< Domain of the port. Determines the contents of metadata below. */
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    union {
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_AUDIO_PORTDEFINITIONTYPE audio;
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_VIDEO_PORTDEFINITIONTYPE video;
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IMAGE_PORTDEFINITIONTYPE image;
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_OTHER_PORTDEFINITIONTYPE other;
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    } format;
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bBuffersContiguous;
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBufferAlignment;
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_PORTDEFINITIONTYPE;
104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */
106e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_PARAM_U32TYPE {
107e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;                    /**< Size of this structure, in Bytes */
108e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */
109e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;               /**< port that this structure applies to */
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nU32;                     /**< U32 value */
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_U32TYPE;
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */
114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_SUSPENSIONPOLICYTYPE {
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
116e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_SuspensionEnabled,  /**< Suspension allowed */
117e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SuspensionPolicyMax = 0x7fffffff
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_SUSPENSIONPOLICYTYPE;
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
124e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
125e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SUSPENSIONPOLICYTYPE ePolicy;
127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_SUSPENSIONPOLICYTYPE;
128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */
130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_SUSPENSIONTYPE {
131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_NotSuspended, /**< component is not suspended */
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Suspended,    /**< component is suspended */
133e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_SuspendMax = 0x7FFFFFFF
136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_SUSPENSIONTYPE;
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */
139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONTYPE {
140e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
141e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
142e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_SUSPENSIONTYPE eType;
143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_SUSPENSIONTYPE ;
144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_BOOLEANTYPE {
146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
148e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnabled;
149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_BOOLEANTYPE;
150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Parameter specifying the content uri to use. */
152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup cp */
153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_CONTENTURITYPE
154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                      /**< size of the structure in bytes, including
156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                             actual URI name */
157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;           /**< OMX specification version information */
158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 contentURI[1];               /**< The URI name */
159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_CONTENTURITYPE;
160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Parameter specifying the pipe to use. */
162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup cp */
163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_CONTENTPIPETYPE
164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_HANDLETYPE hPipe;       /**< The pipe handle*/
168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_CONTENTPIPETYPE;
169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */
171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_RESOURCECONCEALMENTTYPE {
172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
174e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
175e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen                                            methods (like degrading algorithm quality to
176e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen                                            lower resource consumption or functional bypass)
177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                            on a component as a resolution to resource conflicts. */
178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_RESOURCECONCEALMENTTYPE;
179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATACHARSETTYPE {
183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetUnknown = 0,
184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetASCII,
185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetBinary,
186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetCodePage1252,
187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetUTF8,
188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetJavaConformantUTF8,
189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetUTF7,
190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetImapUTF7,
191e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_MetadataCharsetUTF16LE,
192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetUTF16BE,
193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetGB12345,
194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetHZGB2312,
195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetGB2312,
196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetGB18030,
197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetGBK,
198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetBig5,
199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88591,
200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88592,
201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88593,
202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88594,
203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88595,
204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88596,
205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88597,
206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88598,
207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO88599,
208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO885910,
209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO885913,
210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO885914,
211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO885915,
212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetShiftJIS,
213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO2022JP,
214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISO2022JP1,
215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetISOEUCJP,
216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetSMS7Bit,
217e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATACHARSETTYPE;
221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATASCOPETYPE
224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopeAllLevels,
226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopeTopLevel,
227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopePortLevel,
228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopeNodeLevel,
229e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataScopeTypeMax = 0x7fffffff
232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATASCOPETYPE;
233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATASEARCHMODETYPE
236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataSearchValueSizeByIndex,
238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataSearchItemByIndex,
239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataSearchNextItemByKey,
240e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_MetadataSearchTypeMax = 0x7fffffff
243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATASEARCHMODETYPE;
244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATASCOPETYPE eScopeMode;
250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nScopeSpecifier;
251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMetadataItemCount;
252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_METADATAITEMCOUNTTYPE;
253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMTYPE
256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATASCOPETYPE eScopeMode;
260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nScopeSpecifier;
261e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nMetadataItemIndex;
262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATASEARCHMODETYPE eSearchMode;
263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATACHARSETTYPE eKeyCharset;
264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nKeySizeUsed;
265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nKey[128];
266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATACHARSETTYPE eValueCharset;
267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING sLanguageCountry;
268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nValueMaxSize;
269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nValueSizeUsed;
270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nValue[1];
271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_METADATAITEMTYPE;
272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ingroup metadata */
274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bAllKeys;
279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nParentNodeID;
280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNumNodes;
281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bAllKeys;
289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nParentNodeID;
290e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nNodeIndex;
291e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nNodeID;
292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING cNodeName;
293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bIsLeafType;
294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_CONTAINERNODEIDTYPE;
295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */
297e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_PARAM_METADATAFILTERTYPE
298e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen{
299e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
300e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
301e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bAllKeys;	/* if true then this structure refers to all keys and
302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                         * the three key fields below are ignored */
303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_METADATACHARSETTYPE eKeyCharset;
304e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nKeySizeUsed;
305e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U8   nKey [128];
306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nLanguageCountrySizeUsed;
307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nLanguageCountry[128];
308e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnabled;	/* if true then key is part of filter (e.g.
309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                         * retained for query later). If false then
310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                         * key is not part of filter */
311e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_PARAM_METADATAFILTERTYPE;
312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
313e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** The OMX_HANDLETYPE structure defines the component handle.  The component
314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  handle is used to access all of the component's public methods and also
315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  contains pointers to the component's private data area.  The component
316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  handle is initialized by the OMX core (with help from the component)
317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  during the process of loading the component.  After the component is
318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  successfully loaded, the application can safely access any of the
319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  component's public functions (although some may return an error because
320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  the state is inappropriate for the access).
321e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @ingroup comp
323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_COMPONENTTYPE
325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    /** The size of this structure, in bytes.  It is the responsibility
327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        of the allocator of this structure to fill in this value.  Since
328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        this structure is allocated by the GetHandle function, this
329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        function will fill in this value. */
330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
332e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** nVersion is the version of the OMX specification that the structure
333e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        is built against.  It is the responsibility of the creator of this
334e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        structure to initialize this value and every user of this structure
335e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        should verify that it knows how to use the exact version of
336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        this structure found herein. */
337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
339e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** pComponentPrivate is a pointer to the component private data area.
340e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        This member is allocated and initialized by the component when the
341e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        component is first loaded.  The application should not access this
342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        data area. */
343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PTR pComponentPrivate;
344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
345e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** pApplicationPrivate is a pointer that is a parameter to the
346e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        OMX_GetHandle method, and contains an application private value
347e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        provided by the IL client.  This application private data is
348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        returned to the IL Client by OMX in all callbacks */
349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PTR pApplicationPrivate;
350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
351e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the GetComponentVersion method.
353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*GetComponentVersion)(
355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_STRING pComponentName,
357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_UUIDTYPE* pComponentUUID);
360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
361e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_SendCommand in OMX_core.h or the OMX IL
362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the SendCommand method.
363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*SendCommand)(
365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_COMMANDTYPE Cmd,
367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_U32 nParam1,
368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_PTR pCmdData);
369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
370e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_GetParameter in OMX_core.h or the OMX IL
371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the GetParameter method.
372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*GetParameter)(
374e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_HANDLETYPE hComponent,
375e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_INDEXTYPE nParamIndex,
376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_INOUT OMX_PTR pComponentParameterStructure);
377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
379e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_SetParameter in OMX_core.h or the OMX IL
380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the SetParameter method.
381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*SetParameter)(
383e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_HANDLETYPE hComponent,
384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_INDEXTYPE nIndex,
385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_PTR pComponentParameterStructure);
386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
388e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_GetConfig in OMX_core.h or the OMX IL
389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the GetConfig method.
390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*GetConfig)(
392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
393e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_INDEXTYPE nIndex,
394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_INOUT OMX_PTR pComponentConfigStructure);
395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
397e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_SetConfig in OMX_core.h or the OMX IL
398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the SetConfig method.
399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*SetConfig)(
401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
402e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_INDEXTYPE nIndex,
403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_PTR pComponentConfigStructure);
404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
406e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the GetExtensionIndex method.
408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*GetExtensionIndex)(
410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_STRING cParameterName,
412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_INDEXTYPE* pIndexType);
413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
414c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
415e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_GetState in OMX_core.h or the OMX IL
416c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the GetState method.
417c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
418c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*GetState)(
419c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
420c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_OUT OMX_STATETYPE* pState);
421c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
422e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
423c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    /** The ComponentTunnelRequest method will interact with another OMX
424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        component to determine if tunneling is possible and to setup the
425e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        tunneling.  The return codes for this method can be used to
426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        determine if tunneling is not possible, or if tunneling is not
427e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        supported.
428e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        Base profile components (i.e. non-interop) do not support this
430e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        method and should return OMX_ErrorNotImplemented
431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
432e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        The interop profile component MUST support tunneling to another
433e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        interop profile component with a compatible port parameters.
434c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        A component may also support proprietary communication.
435e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
436e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        If proprietary communication is supported the negotiation of
437e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        proprietary communication is done outside of OMX in a vendor
438e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        specific way. It is only required that the proper result be
439e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        returned and the details of how the setup is done is left
440e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        to the component implementation.
441e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        When this method is invoked when nPort in an output port, the
443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        component will:
444e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        1.  Populate the pTunnelSetup structure with the output port's
445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            requirements and constraints for the tunnel.
446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
447c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        When this method is invoked when nPort in an input port, the
448c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        component will:
449e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        1.  Query the necessary parameters from the output port to
450c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            determine if the ports are compatible for tunneling
451c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        2.  If the ports are compatible, the component should store
452c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            the tunnel step provided by the output port
453c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        3.  Determine which port (either input or output) is the buffer
454c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            supplier, and call OMX_SetParameter on the output port to
455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            indicate this selection.
456e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        The component will return from this call within 5 msec.
458e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen
459c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] hComp
460c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            Handle of the component to be accessed.  This is the component
461c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            handle returned by the call to the OMX_GetHandle method.
462c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] nPort
463c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            nPort is used to select the port on the component to be used
464c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            for tunneling.
465c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] hTunneledComp
466e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            Handle of the component to tunnel with.  This is the component
467c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            handle returned by the call to the OMX_GetHandle method.  When
468c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            this parameter is 0x0 the component should setup the port for
469c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            communication with the application / IL Client.
470c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] nPortOutput
471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            nPortOutput is used indicate the port the component should
472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            tunnel with.
473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] pTunnelSetup
474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            Pointer to the tunnel setup structure.  When nPort is an output port
475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            the component should populate the fields of this structure.  When
476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            When nPort is an input port the component should review the setup
477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            provided by the component with the output port.
478c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @return OMX_ERRORTYPE
479c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            If the command successfully executes, the return code will be
480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup tun
482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    */
483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*ComponentTunnelRequest)(
485c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IN  OMX_HANDLETYPE hComp,
486c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IN  OMX_U32 nPort,
487c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IN  OMX_HANDLETYPE hTunneledComp,
488c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IN  OMX_U32 nTunneledPort,
489e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen        OMX_INOUT  OMX_TUNNELSETUPTYPE* pTunnelSetup);
490c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
491e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
492c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the UseBuffer method.
493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup buf
494c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
495c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*UseBuffer)(
496c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_HANDLETYPE hComponent,
497c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
498c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U32 nPortIndex,
499c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_PTR pAppPrivate,
500c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U32 nSizeBytes,
501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U8* pBuffer);
502c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
503e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
504c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the AllocateBuffer method.
505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup buf
506c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*AllocateBuffer)(
508c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_HANDLETYPE hComponent,
509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U32 nPortIndex,
511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_PTR pAppPrivate,
512c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U32 nSizeBytes);
513c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
514e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
515c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the FreeBuffer method.
516c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup buf
517c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
518c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*FreeBuffer)(
519c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_U32 nPortIndex,
521c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
523e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the EmptyThisBuffer method.
525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup buf
526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
527c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*EmptyThisBuffer)(
528c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
530c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
531e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        specification for details on the FillThisBuffer method.
533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @ingroup buf
534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*FillThisBuffer)(
536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
538c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    /** The SetCallbacks method is used by the core to specify the callback
540c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        structure from the application to the component.  This is a blocking
541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        call.  The component will return from this call within 5 msec.
542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] hComponent
543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            Handle of the component to be accessed.  This is the component
544c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            handle returned by the call to the GetHandle function.
545c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] pCallbacks
546e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            pointer to an OMX_CALLBACKTYPE structure used to provide the
547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            callback information to the component
548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] pAppData
549e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            pointer to an application defined value.  It is anticipated that
550c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            the application will pass a pointer to a data structure or a "this
551c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            pointer" in this area to allow the callback (in the application)
552c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            to determine the context of the call
553c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @return OMX_ERRORTYPE
554c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            If the command successfully executes, the return code will be
555c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
556c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
557c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*SetCallbacks)(
558c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent,
559e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen            OMX_IN  OMX_CALLBACKTYPE* pCallbacks,
560c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_PTR pAppData);
561c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
562c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    /** ComponentDeInit method is used to deinitialize the component
563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        providing a means to free any resources allocated at component
564c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        initialization.  NOTE:  After this call the component handle is
565c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        not valid for further use.
566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @param [in] hComponent
567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            Handle of the component to be accessed.  This is the component
568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            handle returned by the call to the GetHandle function.
569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        @return OMX_ERRORTYPE
570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            If the command successfully executes, the return code will be
571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
572c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     */
573c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*ComponentDeInit)(
574c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN  OMX_HANDLETYPE hComponent);
575c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
576c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    /** @ingroup buf */
577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*UseEGLImage)(
578c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_HANDLETYPE hComponent,
579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
580c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_U32 nPortIndex,
581c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN OMX_PTR pAppPrivate,
582c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            OMX_IN void* eglImage);
583c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
584c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ERRORTYPE (*ComponentRoleEnum)(
585c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        OMX_IN OMX_HANDLETYPE hComponent,
586c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_OUT OMX_U8 *cRole,
587c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev		OMX_IN OMX_U32 nIndex);
588c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
589c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_COMPONENTTYPE;
590c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
591c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
592c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
593c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
594c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
595c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
596c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* File EOF */
597