1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (c) 2008 The Khronos Group Inc. 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Permission is hereby granted, free of charge, to any person obtaining 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a copy of this software and associated documentation files (the 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * "Software"), to deal in the Software without restriction, including 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * without limitation the rights to use, copy, modify, merge, publish, 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * distribute, sublicense, and/or sell copies of the Software, and to 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * permit persons to whom the Software is furnished to do so, subject 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to the following conditions: 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The above copyright notice and this permission notice shall be included 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * in all copies or substantial portions of the Software. 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_Types.h - OpenMax IL version 1.1.2 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The OMX_Types header file contains the primitive type definitions used by 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the core, the application and the component. This file may need to be 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modified to be used on systems that do not have "char" set to 8 bits, 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * "short" set to 16 bits and "long" set to 32 bits. 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_Types_h 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_Types_h 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern "C" { 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */ 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_API and OMX_APIENTRY are platform specific definitions used 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to declare OMX function prototypes. They are modified to meet the 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * requirements for a particular platform */ 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __SYMBIAN32__ 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# ifdef __OMX_EXPORTS 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API __declspec(dllexport) 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# else 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# ifdef _WIN32 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API __declspec(dllexport) 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# else 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API __declspec(dllimport) 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# endif 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# endif 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# ifdef _WIN32 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# ifdef __OMX_EXPORTS 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API __declspec(dllexport) 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# else 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API __declspec(dllimport) 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# endif 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# else 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# ifdef __OMX_EXPORTS 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# else 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# define OMX_API extern 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# endif 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin# endif 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_APIENTRY 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_APIENTRY 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_IN is used to identify inputs to an OMX function. This designation 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will also be used in the case of a pointer that points to a parameter 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin that is used as an output. */ 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_IN 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_IN 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_OUT is used to identify outputs from an OMX function. This 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin designation will also be used in the case of a pointer that points 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to a parameter that is used as an input. */ 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_OUT 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_OUT 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_INOUT is used to identify parameters that may be either inputs or 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin outputs from an OMX function at the same time. This designation will 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin also be used in the case of a pointer that points to a parameter that 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is used both as an input and an output. */ 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_INOUT 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_INOUT 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_ALL is used to as a wildcard to select all entities of the same type 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * when specifying the index, or referring to a object by an index. (i.e. 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * use OMX_ALL to indicate all N channels). When used as a port index 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * for a config or parameter this OMX_ALL denotes that the config or 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * parameter applies to the entire component not just one port. */ 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_ALL 0xFFFFFFFF 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** In the following we define groups that help building doxygen documentation */ 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup core OpenMAX IL core 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Functions and structure related to the OMX IL core 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** @defgroup comp OpenMAX IL component 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Functions and structure related to the OMX IL component 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup rpm Resource and Policy Management 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Structures for resource and policy management of components 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup buf Buffer Management 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Buffer handling functions and structures 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup tun Tunneling 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup core comp 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Structures and functions to manage tunnels among component ports 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup cp Content Pipes 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup core 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** @defgroup metadata Metadata handling 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */ 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned char OMX_U8; 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S8 is an 8 bit signed quantity that is byte aligned */ 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed char OMX_S8; 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */ 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned short OMX_U16; 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */ 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed short OMX_S16; 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */ 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned long OMX_U32; 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */ 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed long OMX_S32; 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Users with compilers that cannot accept the "long long" designation should 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin define the OMX_SKIP64BIT macro. It should be noted that this may cause 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin some components to fail to compile if the component was written to require 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 64 bit integral types. However, these components would NOT compile anyway 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin since the compiler does not support the way the component was written. 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_SKIP64BIT 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __SYMBIAN32__ 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned long long OMX_U64; 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed long long OMX_S64; 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#elif defined(WIN32) 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned __int64 OMX_U64; 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed __int64 OMX_S64; 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else /* WIN32 */ 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned long long OMX_U64; 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef signed long long OMX_S64; 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* WIN32 */ 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_BOOL type is intended to be used to represent a true or a false 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin value when passing parameters to and from the OMX core and components. The 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary. 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_BOOL { 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_FALSE = 0, 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRUE = !OMX_FALSE, 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL_MAX = 0x7FFFFFFF 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_BOOL; 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_PTR type is intended to be used to pass pointers between the OMX 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin applications and the OMX Core and components. This is a 32 bit pointer and 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is aligned on a 32 bit boundary. 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef void* OMX_PTR; 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_STRING type is intended to be used to pass "C" type strings between 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the application and the core and component. The OMX_STRING type is a 32 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bit pointer to a zero terminated string. The pointer is word aligned and 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the string is byte aligned. 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef char* OMX_STRING; 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffers between the application and the component and core. The OMX_BYTE 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin type is a 32 bit pointer to a zero terminated string. The pointer is word 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aligned and the string is byte aligned. 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned char* OMX_BYTE; 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin at runtime. This identifier should be generated by a component in a way 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin that guarantees that every instance of the identifier running on the system 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is unique. */ 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef unsigned char OMX_UUIDTYPE[128]; 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an output port. This enumeration is common across all component types. 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_DIRTYPE 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DirInput, /**< Port is an input port */ 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DirOutput, /**< Port is an output port */ 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DirMax = 0x7FFFFFFF 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_DIRTYPE; 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for numerical data (i.e. big endian, or little endian). 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_ENDIANTYPE 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EndianBig, /**< big endian */ 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EndianLittle, /**< little endian */ 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EndianMax = 0x7FFFFFFF 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_ENDIANTYPE; 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is signed or unsigned 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_NUMERICALDATATYPE 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_NumericalDataSigned, /**< signed data */ 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_NumericalDataUnsigned, /**< unsigned data */ 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_NumercialDataMax = 0x7FFFFFFF 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_NUMERICALDATATYPE; 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Unsigned bounded value type */ 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_BU32 { 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nValue; /**< actual value */ 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_BU32; 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Signed bounded value type */ 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_BS32 { 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nValue; /**< actual value */ 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_BS32; 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Structure representing some time or duration in microseconds. This structure 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * negative deltas and preroll scenarios. The quantity is represented in microseconds 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g. 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * individual audio samples delivered at 192 kHz). The quantity is 64 bit to 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * accommodate a large dynamic range (signed 32 bit values would allow only for plus 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * or minus 35 minutes). 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Implementations with limited precision may convert the signed 64 bit value to 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a signed 32 bit value internally but risk loss of precision. 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_SKIP64BIT 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef OMX_S64 OMX_TICKS; 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_TICKS 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */ 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */ 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_TICKS; 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_TICKS_PER_SECOND 1000000 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Define the public interface for the OMX Handle. The core will not use 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this value internally, but the application should only use this value. 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef void* OMX_HANDLETYPE; 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_MARKTYPE 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin generate a mark event upon 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin processing the mark. */ 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pMarkData; /**< Application specific data associated with 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the mark sent on a mark event to disambiguate 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this mark from others. */ 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_MARKTYPE; 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * platform & operating specific object used to reference the display 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * or can be used by a audio port for native audio rendering */ 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef void* OMX_NATIVE_DEVICETYPE; 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * platform & operating specific object used to reference the window */ 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef void* OMX_NATIVE_WINDOWTYPE; 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_VERSIONTYPE union is used to specify the version for 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a structure or component. For a component, the version is entirely 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specified by the component vendor. Components doing the same function 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin from different vendors may or may not have the same version. For 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structures, the version shall be set by the entity that allocates the 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structure. For structures specified in the OMX 1.1 specification, the 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin value of the version shall be set to 1.1.0.0 in all cases. Access to the 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin by accessing one of the structure elements to, for example, check only 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the Major revision. 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef union OMX_VERSIONTYPE 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nVersionMajor; /**< Major version accessor element */ 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nVersionMinor; /**< Minor version accessor element */ 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nRevision; /**< Revision version accessor element */ 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nStep; /**< Step version accessor element */ 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } s; 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVersion; /**< 32 bit value to make accessing the 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin version easily done in a single word 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size copy/compare operation */ 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_VERSIONTYPE; 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */ 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* File EOF */ 348