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