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