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