1579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata/** 2579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * File: omxtypes.h 3579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * Brief: Defines basic Data types used in OpenMAX v1.0.2 header files. 4579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * 5579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * Copyright � 2005-2008 The Khronos Group Inc. All Rights Reserved. 6579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * 7579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata * These materials are protected by copyright laws and contain material 8dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata * proprietary to the Khronos Group, Inc. You may use these materials 9dc1df6b2fd7d359753b2bcfcf2decb114f465a1dEnrico Granata * for implementing Khronos specifications, without altering or removing 100d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata * any trademark, copyright or other notice from the specification. 110d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata * 12b370df27c76fd875f3312be487868528121a4838Enrico Granata * Khronos Group makes no, and expressly disclaims any, representations 13b370df27c76fd875f3312be487868528121a4838Enrico Granata * or warranties, express or implied, regarding these materials, including, 140d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata * without limitation, any implied warranties of merchantability or fitness 15b370df27c76fd875f3312be487868528121a4838Enrico Granata * for a particular purpose or non-infringement of any intellectual property. 160d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata * Khronos Group makes no, and expressly disclaims any, warranties, express 17b370df27c76fd875f3312be487868528121a4838Enrico Granata * or implied, regarding the correctness, accuracy, completeness, timeliness, 18b370df27c76fd875f3312be487868528121a4838Enrico Granata * and reliability of these materials. 19b370df27c76fd875f3312be487868528121a4838Enrico Granata * 20b370df27c76fd875f3312be487868528121a4838Enrico Granata * Under no circumstances will the Khronos Group, or any of its Promoters, 21b370df27c76fd875f3312be487868528121a4838Enrico Granata * Contributors or Members or their respective partners, officers, directors, 22b370df27c76fd875f3312be487868528121a4838Enrico Granata * employees, agents or representatives be liable for any damages, whether 23b370df27c76fd875f3312be487868528121a4838Enrico Granata * direct, indirect, special or consequential damages for lost revenues, 24f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata * lost profits, or otherwise, arising from or in connection with these 25b370df27c76fd875f3312be487868528121a4838Enrico Granata * materials. 26f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata * 270d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata * Khronos and OpenMAX are trademarks of the Khronos Group Inc. 28b370df27c76fd875f3312be487868528121a4838Enrico Granata * 29092f71fca36e29031da906e26bda1a28d5595e8cEnrico Granata */ 30f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata 31f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata#ifndef _OMXTYPES_H_ 32b370df27c76fd875f3312be487868528121a4838Enrico Granata#define _OMXTYPES_H_ 33b370df27c76fd875f3312be487868528121a4838Enrico Granata 34b370df27c76fd875f3312be487868528121a4838Enrico Granata#include <limits.h> 350d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata#include <stdint.h> 36b370df27c76fd875f3312be487868528121a4838Enrico Granata 37b370df27c76fd875f3312be487868528121a4838Enrico Granata#define OMX_IN 38b370df27c76fd875f3312be487868528121a4838Enrico Granata#define OMX_OUT 39b370df27c76fd875f3312be487868528121a4838Enrico Granata#define OMX_INOUT 400d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata 41f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata 42092f71fca36e29031da906e26bda1a28d5595e8cEnrico Granatatypedef enum { 43b370df27c76fd875f3312be487868528121a4838Enrico Granata 440d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata /* Mandatory return codes - use cases are explicitly described for each function */ 45b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_Sts_NoErr = 0, /* No error, the function completed successfully */ 46b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_Sts_Err = -2, /* Unknown/unspecified error */ 47f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata OMX_Sts_InvalidBitstreamValErr = -182, /* Invalid value detected during bitstream processing */ 48b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_Sts_MemAllocErr = -9, /* Not enough memory allocated for the operation */ 49b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_GainCtrErr = -159, /* AAC: Unsupported gain control data detected */ 50b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_PrgNumErr = -167, /* AAC: Invalid number of elements for one program */ 51b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_CoefValErr = -163, /* AAC: Invalid quantized coefficient value */ 52b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_MaxSfbErr = -162, /* AAC: Invalid maxSfb value in relation to numSwb */ 53f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata OMX_StsACAAC_PlsDataErr = -160, /* AAC: pulse escape sequence data error */ 54b370df27c76fd875f3312be487868528121a4838Enrico Granata 55f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata /* Optional return codes - use cases are explicitly described for each function*/ 560d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata OMX_Sts_BadArgErr = -5, /* Bad Arguments */ 57b370df27c76fd875f3312be487868528121a4838Enrico Granata 58f2a84671ff78bee1f82b60698f3ee9791585f8acEnrico Granata OMX_StsACAAC_TnsNumFiltErr = -157, /* AAC: Invalid number of TNS filters */ 59b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_TnsLenErr = -156, /* AAC: Invalid TNS region length */ 60b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_TnsOrderErr = -155, /* AAC: Invalid order of TNS filter */ 61b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_TnsCoefResErr = -154, /* AAC: Invalid bit-resolution for TNS filter coefficients */ 620d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata OMX_StsACAAC_TnsCoefErr = -153, /* AAC: Invalid TNS filter coefficients */ 63b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsACAAC_TnsDirectErr = -152, /* AAC: Invalid TNS filter direction */ 64b370df27c76fd875f3312be487868528121a4838Enrico Granata 65b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsICJP_JPEGMarkerErr = -183, /* JPEG marker encountered within an entropy-coded block; */ 660d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata /* Huffman decoding operation terminated early. */ 67b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_StsICJP_JPEGMarker = -181, /* JPEG marker encountered; Huffman decoding */ 68b370df27c76fd875f3312be487868528121a4838Enrico Granata /* operation terminated early. */ 69579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata OMX_StsIPPP_ContextMatchErr = -17, /* Context parameter doesn't match to the operation */ 70579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata 71579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata OMX_StsSP_EvenMedianMaskSizeErr = -180, /* Even size of the Median Filter mask was replaced by the odd one */ 72579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata 73b370df27c76fd875f3312be487868528121a4838Enrico Granata OMX_Sts_MaximumEnumeration = INT_MAX /*Placeholder, forces enum of size OMX_INT*/ 74b370df27c76fd875f3312be487868528121a4838Enrico Granata 75b370df27c76fd875f3312be487868528121a4838Enrico Granata } OMXResult; /** Return value or error value returned from a function. Identical to OMX_INT */ 760d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granata 77b370df27c76fd875f3312be487868528121a4838Enrico Granata 78a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata/* OMX_U8 */ 79579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granatatypedef uint8_t OMX_U8; 80579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata 81b370df27c76fd875f3312be487868528121a4838Enrico Granata/* OMX_S8 */ 82b370df27c76fd875f3312be487868528121a4838Enrico Granatatypedef int8_t OMX_S8; 838f18240a09893310c43673901d863892ae7b0611Enrico Granata 848f18240a09893310c43673901d863892ae7b0611Enrico Granata/* OMX_U16 */ 85b370df27c76fd875f3312be487868528121a4838Enrico Granatatypedef uint16_t OMX_U16; 86092f71fca36e29031da906e26bda1a28d5595e8cEnrico Granata 87b370df27c76fd875f3312be487868528121a4838Enrico Granata/* OMX_S16 */ 88b370df27c76fd875f3312be487868528121a4838Enrico Granatatypedef int16_t OMX_S16; 89092f71fca36e29031da906e26bda1a28d5595e8cEnrico Granata 90805f79b15edd61887c26a3f0ea80457790ba5807Enrico Granata/* OMX_U32 */ 91b370df27c76fd875f3312be487868528121a4838Enrico Granatatypedef uint32_t OMX_U32; 92b370df27c76fd875f3312be487868528121a4838Enrico Granata 93b370df27c76fd875f3312be487868528121a4838Enrico Granata/* OMX_S32 */ 940d235d5864e996d95f485df1a0df406126e1ccdeEnrico Granatatypedef int32_t OMX_S32; 95b370df27c76fd875f3312be487868528121a4838Enrico Granata 96b370df27c76fd875f3312be487868528121a4838Enrico Granata/* OMX_U64 & OMX_S64 */ 97a5c2ce05705f784fd4ada97823af6ff7006fea58Enrico Granata#if defined( _WIN32 ) || defined ( _WIN64 ) 98579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata typedef __int64 OMX_S64; /** Signed 64-bit integer */ 99579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata typedef unsigned __int64 OMX_U64; /** Unsigned 64-bit integer */ 100579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata #define OMX_MIN_S64 (0x8000000000000000i64) 101579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata #define OMX_MIN_U64 (0x0000000000000000i64) 102579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata #define OMX_MAX_S64 (0x7FFFFFFFFFFFFFFFi64) 1038f18240a09893310c43673901d863892ae7b0611Enrico Granata #define OMX_MAX_U64 (0xFFFFFFFFFFFFFFFFi64) 104579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata#else 105579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata typedef int64_t OMX_S64; /** Signed 64-bit integer */ 106579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata typedef uint64_t OMX_U64; /** Unsigned 64-bit integer */ 107579a296e7566b7b6d24b51e383bca1fe1e62086fEnrico Granata #define OMX_MIN_S64 (0x8000000000000000LL) 108b370df27c76fd875f3312be487868528121a4838Enrico Granata #define OMX_MIN_U64 (0x0000000000000000LL) 109b370df27c76fd875f3312be487868528121a4838Enrico Granata #define OMX_MAX_S64 (0x7FFFFFFFFFFFFFFFLL) 110b370df27c76fd875f3312be487868528121a4838Enrico Granata #define OMX_MAX_U64 (0xFFFFFFFFFFFFFFFFLL) 111#endif 112 113/* OMX_SC8 */ 114typedef struct 115{ 116 OMX_S8 Re; /** Real part */ 117 OMX_S8 Im; /** Imaginary part */ 118 119} OMX_SC8; /** Signed 8-bit complex number */ 120 121 122/* OMX_SC16 */ 123typedef struct 124{ 125 OMX_S16 Re; /** Real part */ 126 OMX_S16 Im; /** Imaginary part */ 127 128} OMX_SC16; /** Signed 16-bit complex number */ 129 130 131/* OMX_SC32 */ 132typedef struct 133{ 134 OMX_S32 Re; /** Real part */ 135 OMX_S32 Im; /** Imaginary part */ 136 137} OMX_SC32; /** Signed 32-bit complex number */ 138 139 140/* OMX_SC64 */ 141typedef struct 142{ 143 OMX_S64 Re; /** Real part */ 144 OMX_S64 Im; /** Imaginary part */ 145 146} OMX_SC64; /** Signed 64-bit complex number */ 147 148 149/* OMX_F32 */ 150typedef float OMX_F32; /** Single precision floating point,IEEE 754 */ 151 152 153/* OMX_F64 */ 154typedef double OMX_F64; /** Double precision floating point,IEEE 754 */ 155 156 157/* OMX_INT */ 158typedef int OMX_INT; /** signed integer corresponding to machine word length, has maximum signed value INT_MAX*/ 159 160 161#define OMX_MIN_S8 (-128) 162#define OMX_MIN_U8 0 163#define OMX_MIN_S16 (-32768) 164#define OMX_MIN_U16 0 165#define OMX_MIN_S32 (-2147483647-1) 166#define OMX_MIN_U32 0 167 168#define OMX_MAX_S8 (127) 169#define OMX_MAX_U8 (255) 170#define OMX_MAX_S16 (32767) 171#define OMX_MAX_U16 (0xFFFF) 172#define OMX_MAX_S32 (2147483647) 173#define OMX_MAX_U32 (0xFFFFFFFF) 174 175typedef void OMXVoid; 176 177#ifndef NULL 178#define NULL ((void*)0) 179#endif 180 181/** Defines the geometric position and size of a rectangle, 182 * where x,y defines the coordinates of the top left corner 183 * of the rectangle, with dimensions width in the x-direction 184 * and height in the y-direction */ 185typedef struct { 186 OMX_INT x; /** x-coordinate of top left corner of rectangle */ 187 OMX_INT y; /** y-coordinate of top left corner of rectangle */ 188 OMX_INT width; /** Width in the x-direction. */ 189 OMX_INT height; /** Height in the y-direction. */ 190}OMXRect; 191 192 193/** Defines the geometric position of a point, */ 194typedef struct 195{ 196 OMX_INT x; /** x-coordinate */ 197 OMX_INT y; /** y-coordinate */ 198 199} OMXPoint; 200 201 202/** Defines the dimensions of a rectangle, or region of interest in an image */ 203typedef struct 204{ 205 OMX_INT width; /** Width of the rectangle, in the x-direction */ 206 OMX_INT height; /** Height of the rectangle, in the y-direction */ 207 208} OMXSize; 209 210#endif /* _OMXTYPES_H_ */ 211