1334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* ------------------------------------------------------------------
2334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (C) 1998-2009 PacketVideo
3334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
4334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Licensed under the Apache License, Version 2.0 (the "License");
5334de520b0369215b7931fefa424fb92d295f0ebJames Dong * you may not use this file except in compliance with the License.
6334de520b0369215b7931fefa424fb92d295f0ebJames Dong * You may obtain a copy of the License at
7334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
8334de520b0369215b7931fefa424fb92d295f0ebJames Dong *      http://www.apache.org/licenses/LICENSE-2.0
9334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
10334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Unless required by applicable law or agreed to in writing, software
11334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distributed under the License is distributed on an "AS IS" BASIS,
12334de520b0369215b7931fefa424fb92d295f0ebJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13334de520b0369215b7931fefa424fb92d295f0ebJames Dong * express or implied.
14334de520b0369215b7931fefa424fb92d295f0ebJames Dong * See the License for the specific language governing permissions
15334de520b0369215b7931fefa424fb92d295f0ebJames Dong * and limitations under the License.
16334de520b0369215b7931fefa424fb92d295f0ebJames Dong * -------------------------------------------------------------------
17334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
18334de520b0369215b7931fefa424fb92d295f0ebJames Dong/*
19a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Copyright (c) 2008 The Khronos Group Inc.
20a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
21334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Permission is hereby granted, free of charge, to any person obtaining
22334de520b0369215b7931fefa424fb92d295f0ebJames Dong * a copy of this software and associated documentation files (the
23334de520b0369215b7931fefa424fb92d295f0ebJames Dong * "Software"), to deal in the Software without restriction, including
24334de520b0369215b7931fefa424fb92d295f0ebJames Dong * without limitation the rights to use, copy, modify, merge, publish,
25334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distribute, sublicense, and/or sell copies of the Software, and to
26334de520b0369215b7931fefa424fb92d295f0ebJames Dong * permit persons to whom the Software is furnished to do so, subject
27a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * to the following conditions:
28334de520b0369215b7931fefa424fb92d295f0ebJames Dong * The above copyright notice and this permission notice shall be included
29a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * in all copies or substantial portions of the Software.
30a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
31334de520b0369215b7931fefa424fb92d295f0ebJames Dong * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32334de520b0369215b7931fefa424fb92d295f0ebJames Dong * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33334de520b0369215b7931fefa424fb92d295f0ebJames Dong * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34334de520b0369215b7931fefa424fb92d295f0ebJames Dong * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35334de520b0369215b7931fefa424fb92d295f0ebJames Dong * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36334de520b0369215b7931fefa424fb92d295f0ebJames Dong * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
39334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
40334de520b0369215b7931fefa424fb92d295f0ebJames Dong
41334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_Types.h - OpenMax IL version 1.1.2
42a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  The OMX_Types header file contains the primitive type definitions used by
43334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  the core, the application and the component.  This file may need to be
44a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  modified to be used on systems that do not have "char" set to 8 bits,
45334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  "short" set to 16 bits and "long" set to 32 bits.
46334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
47334de520b0369215b7931fefa424fb92d295f0ebJames Dong
48334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_Types_h
49334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_Types_h
50334de520b0369215b7931fefa424fb92d295f0ebJames Dong
51849de60c1eae2ec28f0b468b9ec16b339aad17e9Marcus Oakland#include <stdint.h>
52849de60c1eae2ec28f0b468b9ec16b339aad17e9Marcus Oakland
53334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
54334de520b0369215b7931fefa424fb92d295f0ebJames Dongextern "C" {
55334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
56334de520b0369215b7931fefa424fb92d295f0ebJames Dong
57334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_API and OMX_APIENTRY are platform specific definitions used
58334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  to declare OMX function prototypes.  They are modified to meet the
59334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  requirements for a particular platform */
60a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar#ifdef __SYMBIAN32__
61334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   ifdef __OMX_EXPORTS
62334de520b0369215b7931fefa424fb92d295f0ebJames Dong#       define OMX_API __declspec(dllexport)
63334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   else
64334de520b0369215b7931fefa424fb92d295f0ebJames Dong#       ifdef _WIN32
65a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar#           define OMX_API __declspec(dllexport)
66334de520b0369215b7931fefa424fb92d295f0ebJames Dong#       else
67334de520b0369215b7931fefa424fb92d295f0ebJames Dong#           define OMX_API __declspec(dllimport)
68334de520b0369215b7931fefa424fb92d295f0ebJames Dong#       endif
69334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   endif
70334de520b0369215b7931fefa424fb92d295f0ebJames Dong#else
71334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   ifdef _WIN32
72334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      ifdef __OMX_EXPORTS
73334de520b0369215b7931fefa424fb92d295f0ebJames Dong#          define OMX_API __declspec(dllexport)
74334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      else
75334de520b0369215b7931fefa424fb92d295f0ebJames Dong//#          define OMX_API __declspec(dllimport)
76334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_API
77334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      endif
78334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   else
79334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      ifdef __OMX_EXPORTS
80334de520b0369215b7931fefa424fb92d295f0ebJames Dong#          define OMX_API
81334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      else
82334de520b0369215b7931fefa424fb92d295f0ebJames Dong#          define OMX_API extern
83334de520b0369215b7931fefa424fb92d295f0ebJames Dong#      endif
84334de520b0369215b7931fefa424fb92d295f0ebJames Dong#   endif
85334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
86334de520b0369215b7931fefa424fb92d295f0ebJames Dong
87334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_APIENTRY
88a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar#define OMX_APIENTRY
89a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar#endif
90334de520b0369215b7931fefa424fb92d295f0ebJames Dong
91a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** OMX_IN is used to identify inputs to an OMX function.  This designation
92a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    will also be used in the case of a pointer that points to a parameter
93334de520b0369215b7931fefa424fb92d295f0ebJames Dong    that is used as an output. */
94334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_IN
95334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_IN
96334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
97334de520b0369215b7931fefa424fb92d295f0ebJames Dong
98a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** OMX_OUT is used to identify outputs from an OMX function.  This
99a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    designation will also be used in the case of a pointer that points
100334de520b0369215b7931fefa424fb92d295f0ebJames Dong    to a parameter that is used as an input. */
101334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_OUT
102334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_OUT
103334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
104334de520b0369215b7931fefa424fb92d295f0ebJames Dong
105334de520b0369215b7931fefa424fb92d295f0ebJames Dong
106334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_INOUT is used to identify parameters that may be either inputs or
107a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    outputs from an OMX function at the same time.  This designation will
108a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    also be used in the case of a pointer that  points to a parameter that
109334de520b0369215b7931fefa424fb92d295f0ebJames Dong    is used both as an input and an output. */
110334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_INOUT
111334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_INOUT
112334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
113334de520b0369215b7931fefa424fb92d295f0ebJames Dong
114334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_ALL is used to as a wildcard to select all entities of the same type
115334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  when specifying the index, or referring to a object by an index.  (i.e.
116334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  use OMX_ALL to indicate all N channels). When used as a port index
117334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  for a config or parameter this OMX_ALL denotes that the config or
118334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  parameter applies to the entire component not just one port. */
119334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_ALL 0xFFFFFFFF
120334de520b0369215b7931fefa424fb92d295f0ebJames Dong
121334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** In the following we define groups that help building doxygen documentation */
122334de520b0369215b7931fefa424fb92d295f0ebJames Dong
123334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @defgroup core OpenMAX IL core
124334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Functions and structure related to the OMX IL core
125334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
126a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
127334de520b0369215b7931fefa424fb92d295f0ebJames Dong /** @defgroup comp OpenMAX IL component
128334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Functions and structure related to the OMX IL component
129334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
130a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
131a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** @defgroup rpm Resource and Policy Management
132334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Structures for resource and policy management of components
133334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
134334de520b0369215b7931fefa424fb92d295f0ebJames Dong
135334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @defgroup buf Buffer Management
136334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Buffer handling functions and structures
137334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
138a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
139334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @defgroup tun Tunneling
140334de520b0369215b7931fefa424fb92d295f0ebJames Dong * @ingroup core comp
141334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Structures and functions to manage tunnels among component ports
142334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
143a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
144334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @defgroup cp Content Pipes
145334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  @ingroup core
146334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
147a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
148334de520b0369215b7931fefa424fb92d295f0ebJames Dong /** @defgroup metadata Metadata handling
149a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *
150a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  */
151334de520b0369215b7931fefa424fb92d295f0ebJames Dong
152334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */
153334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned char OMX_U8;
154334de520b0369215b7931fefa424fb92d295f0ebJames Dong
155334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S8 is an 8 bit signed quantity that is byte aligned */
156334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef signed char OMX_S8;
157334de520b0369215b7931fefa424fb92d295f0ebJames Dong
158334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */
159334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned short OMX_U16;
160334de520b0369215b7931fefa424fb92d295f0ebJames Dong
161334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */
162334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef signed short OMX_S16;
163334de520b0369215b7931fefa424fb92d295f0ebJames Dong
164334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */
165849de60c1eae2ec28f0b468b9ec16b339aad17e9Marcus Oaklandtypedef uint32_t OMX_U32;
166334de520b0369215b7931fefa424fb92d295f0ebJames Dong
167334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */
168849de60c1eae2ec28f0b468b9ec16b339aad17e9Marcus Oaklandtypedef int32_t OMX_S32;
169334de520b0369215b7931fefa424fb92d295f0ebJames Dong
170334de520b0369215b7931fefa424fb92d295f0ebJames Dong
171334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* Users with compilers that cannot accept the "long long" designation should
172a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar   define the OMX_SKIP64BIT macro.  It should be noted that this may cause
173334de520b0369215b7931fefa424fb92d295f0ebJames Dong   some components to fail to compile if the component was written to require
174334de520b0369215b7931fefa424fb92d295f0ebJames Dong   64 bit integral types.  However, these components would NOT compile anyway
175334de520b0369215b7931fefa424fb92d295f0ebJames Dong   since the compiler does not support the way the component was written.
176334de520b0369215b7931fefa424fb92d295f0ebJames Dong*/
177334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_SKIP64BIT
178334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __SYMBIAN32__
179334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
180334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned long long OMX_U64;
181334de520b0369215b7931fefa424fb92d295f0ebJames Dong
182334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
183334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef signed long long OMX_S64;
184334de520b0369215b7931fefa424fb92d295f0ebJames Dong
185334de520b0369215b7931fefa424fb92d295f0ebJames Dong#elif defined(WIN32)
186334de520b0369215b7931fefa424fb92d295f0ebJames Dong
187a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
188334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned __int64  OMX_U64;
189334de520b0369215b7931fefa424fb92d295f0ebJames Dong
190334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
191334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef signed   __int64  OMX_S64;
192334de520b0369215b7931fefa424fb92d295f0ebJames Dong
193334de520b0369215b7931fefa424fb92d295f0ebJames Dong#else /* WIN32 */
194334de520b0369215b7931fefa424fb92d295f0ebJames Dong
195334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
196334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned long long OMX_U64;
197334de520b0369215b7931fefa424fb92d295f0ebJames Dong
198334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
199334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef signed long long OMX_S64;
200334de520b0369215b7931fefa424fb92d295f0ebJames Dong
201334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* WIN32 */
202334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
203334de520b0369215b7931fefa424fb92d295f0ebJames Dong
204334de520b0369215b7931fefa424fb92d295f0ebJames Dong
205a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** The OMX_BOOL type is intended to be used to represent a true or a false
206334de520b0369215b7931fefa424fb92d295f0ebJames Dong    value when passing parameters to and from the OMX core and components.  The
207334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary.
208334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
209334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_BOOL {
210334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_FALSE = 0,
211334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_TRUE = !OMX_FALSE,
212334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL_MAX = 0x7FFFFFFF
213a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar} OMX_BOOL;
214abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
215abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung/*
216abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung * Temporary Android 64 bit modification
217abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung *
218abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung * #define OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
219abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung * overrides all OMX pointer types to be uint32_t.
220abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung *
221abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung * After this change, OMX codecs will work in 32 bit only, so 64 bit processes
222abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung * must communicate to a remote 32 bit process for OMX to work.
223abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung */
224abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
225abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung#ifdef OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
226abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
227abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef uint32_t OMX_PTR;
228abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef OMX_PTR OMX_STRING;
229abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef OMX_PTR OMX_BYTE;
230abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
231abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung#else /* OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS */
232abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
233334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_PTR type is intended to be used to pass pointers between the OMX
234334de520b0369215b7931fefa424fb92d295f0ebJames Dong    applications and the OMX Core and components.  This is a 32 bit pointer and
235334de520b0369215b7931fefa424fb92d295f0ebJames Dong    is aligned on a 32 bit boundary.
236334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
237334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef void* OMX_PTR;
238334de520b0369215b7931fefa424fb92d295f0ebJames Dong
239334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_STRING type is intended to be used to pass "C" type strings between
240a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    the application and the core and component.  The OMX_STRING type is a 32
241a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    bit pointer to a zero terminated string.  The  pointer is word aligned and
242a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    the string is byte aligned.
243334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
244334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef char* OMX_STRING;
245334de520b0369215b7931fefa424fb92d295f0ebJames Dong
246334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as
247a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    buffers between the application and the component and core.  The OMX_BYTE
248334de520b0369215b7931fefa424fb92d295f0ebJames Dong    type is a 32 bit pointer to a zero terminated string.  The  pointer is word
249334de520b0369215b7931fefa424fb92d295f0ebJames Dong    aligned and the string is byte aligned.
250334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
251334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned char* OMX_BYTE;
252334de520b0369215b7931fefa424fb92d295f0ebJames Dong
253abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung#endif /* OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS */
254abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hung
255334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify
256334de520b0369215b7931fefa424fb92d295f0ebJames Dong    at runtime.  This identifier should be generated by a component in a way
257334de520b0369215b7931fefa424fb92d295f0ebJames Dong    that guarantees that every instance of the identifier running on the system
258334de520b0369215b7931fefa424fb92d295f0ebJames Dong    is unique. */
259334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef unsigned char OMX_UUIDTYPE[128];
260334de520b0369215b7931fefa424fb92d295f0ebJames Dong
261334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or
262a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    an output port.  This enumeration is common across all component types.
263334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
264334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_DIRTYPE
265334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
266334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_DirInput,              /**< Port is an input port */
267334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_DirOutput,             /**< Port is an output port */
268334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_DirMax = 0x7FFFFFFF
269334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_DIRTYPE;
270334de520b0369215b7931fefa424fb92d295f0ebJames Dong
271a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering
272a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    for numerical data (i.e. big endian, or little endian).
273334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
274334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_ENDIANTYPE
275334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
276334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_EndianBig, /**< big endian */
277334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_EndianLittle, /**< little endian */
278334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_EndianMax = 0x7FFFFFFF
279334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_ENDIANTYPE;
280334de520b0369215b7931fefa424fb92d295f0ebJames Dong
281334de520b0369215b7931fefa424fb92d295f0ebJames Dong
282a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data
28318cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    is signed, unsigned or floating point (Android extension).
28418cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar
28518cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    Android floating point support policy:
28618cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    If component does not support floating point raw audio, it can reset
28718cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    configuration to signed 16-bit integer (support for which is required.)
28818cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    nBitsPerSample will be set to 32 for float data.
289334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
290334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_NUMERICALDATATYPE
291334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
292334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NumericalDataSigned, /**< signed data */
293334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NumericalDataUnsigned, /**< unsigned data */
29418cff14e4e78ea02c5705107af3ae2bf305a332bLajos Molnar    OMX_NumericalDataFloat = 0x7F000001, /**< floating point data */
295334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NumercialDataMax = 0x7FFFFFFF
296334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_NUMERICALDATATYPE;
297334de520b0369215b7931fefa424fb92d295f0ebJames Dong
298334de520b0369215b7931fefa424fb92d295f0ebJames Dong
299334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** Unsigned bounded value type */
300334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_BU32 {
301334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nValue; /**< actual value */
302334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nMin;   /**< minimum for value (i.e. nValue >= nMin) */
303334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nMax;   /**< maximum for value (i.e. nValue <= nMax) */
304334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_BU32;
305334de520b0369215b7931fefa424fb92d295f0ebJames Dong
306334de520b0369215b7931fefa424fb92d295f0ebJames Dong
307334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** Signed bounded value type */
308334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_BS32 {
309334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_S32 nValue; /**< actual value */
310334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_S32 nMin;   /**< minimum for value (i.e. nValue >= nMin) */
311334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_S32 nMax;   /**< maximum for value (i.e. nValue <= nMax) */
312334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_BS32;
313334de520b0369215b7931fefa424fb92d295f0ebJames Dong
314334de520b0369215b7931fefa424fb92d295f0ebJames Dong
315334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** Structure representing some time or duration in microseconds. This structure
316a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  must be interpreted as a signed 64 bit value. The quantity is signed to accommodate
317a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  negative deltas and preroll scenarios. The quantity is represented in microseconds
318334de520b0369215b7931fefa424fb92d295f0ebJames Dong  *  to accomodate high resolution timestamps (e.g. DVD presentation timestamps based
319a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g.
320a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  individual audio samples delivered at 192 kHz). The quantity is 64 bit to
321334de520b0369215b7931fefa424fb92d295f0ebJames Dong  *  accommodate a large dynamic range (signed 32 bit values would allow only for plus
322334de520b0369215b7931fefa424fb92d295f0ebJames Dong  *  or minus 35 minutes).
323334de520b0369215b7931fefa424fb92d295f0ebJames Dong  *
324a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  Implementations with limited precision may convert the signed 64 bit value to
325a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar  *  a signed 32 bit value internally but risk loss of precision.
326334de520b0369215b7931fefa424fb92d295f0ebJames Dong  */
327334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_SKIP64BIT
328334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef OMX_S64 OMX_TICKS;
329334de520b0369215b7931fefa424fb92d295f0ebJames Dong#else
330334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_TICKS
331334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
332334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nLowPart;    /** low bits of the signed 64 bit tick value */
333334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nHighPart;   /** high bits of the signed 64 bit tick value */
334334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_TICKS;
335334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
336334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_TICKS_PER_SECOND 1000000
337334de520b0369215b7931fefa424fb92d295f0ebJames Dong
338334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** Define the public interface for the OMX Handle.  The core will not use
339334de520b0369215b7931fefa424fb92d295f0ebJames Dong    this value internally, but the application should only use this value.
340334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
341abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef OMX_PTR OMX_HANDLETYPE;
342334de520b0369215b7931fefa424fb92d295f0ebJames Dong
343334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_MARKTYPE
344334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
345a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_HANDLETYPE hMarkTargetComponent;   /**< The component that will
346a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar                                                generate a mark event upon
347334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                                processing the mark. */
348a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_PTR pMarkData;   /**< Application specific data associated with
349a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar                              the mark sent on a mark event to disambiguate
350334de520b0369215b7931fefa424fb92d295f0ebJames Dong                              this mark from others. */
351334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_MARKTYPE;
352334de520b0369215b7931fefa424fb92d295f0ebJames Dong
353334de520b0369215b7931fefa424fb92d295f0ebJames Dong
354334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the
355a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  platform & operating specific object used to reference the display
356334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  or can be used by a audio port for native audio rendering */
357abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef OMX_PTR OMX_NATIVE_DEVICETYPE;
358334de520b0369215b7931fefa424fb92d295f0ebJames Dong
359334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the
360334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  platform & operating specific object used to reference the window */
361abec6ad341b81cc5c36ecd93c9f3794989226664Andy Hungtypedef OMX_PTR OMX_NATIVE_WINDOWTYPE;
362334de520b0369215b7931fefa424fb92d295f0ebJames Dong
363334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** The OMX_VERSIONTYPE union is used to specify the version for
364334de520b0369215b7931fefa424fb92d295f0ebJames Dong    a structure or component.  For a component, the version is entirely
365334de520b0369215b7931fefa424fb92d295f0ebJames Dong    specified by the component vendor.  Components doing the same function
366a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    from different vendors may or may not have the same version.  For
367334de520b0369215b7931fefa424fb92d295f0ebJames Dong    structures, the version shall be set by the entity that allocates the
368334de520b0369215b7931fefa424fb92d295f0ebJames Dong    structure.  For structures specified in the OMX 1.1 specification, the
369334de520b0369215b7931fefa424fb92d295f0ebJames Dong    value of the version shall be set to 1.1.0.0 in all cases.  Access to the
370334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or
371334de520b0369215b7931fefa424fb92d295f0ebJames Dong    by accessing one of the structure elements to, for example, check only
372334de520b0369215b7931fefa424fb92d295f0ebJames Dong    the Major revision.
373334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
374334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef union OMX_VERSIONTYPE
375334de520b0369215b7931fefa424fb92d295f0ebJames Dong{
376334de520b0369215b7931fefa424fb92d295f0ebJames Dong    struct
377334de520b0369215b7931fefa424fb92d295f0ebJames Dong    {
378334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_U8 nVersionMajor;   /**< Major version accessor element */
379334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_U8 nVersionMinor;   /**< Minor version accessor element */
380334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_U8 nRevision;       /**< Revision version accessor element */
381334de520b0369215b7931fefa424fb92d295f0ebJames Dong        OMX_U8 nStep;           /**< Step version accessor element */
382334de520b0369215b7931fefa424fb92d295f0ebJames Dong    } s;
383334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nVersion;           /**< 32 bit value to make accessing the
384334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                    version easily done in a single word
385334de520b0369215b7931fefa424fb92d295f0ebJames Dong                                    size copy/compare operation */
386334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_VERSIONTYPE;
387334de520b0369215b7931fefa424fb92d295f0ebJames Dong
388334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
389334de520b0369215b7931fefa424fb92d295f0ebJames Dong}
390334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
391334de520b0369215b7931fefa424fb92d295f0ebJames Dong
392334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
393334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* File EOF */
394