1 //
2 // Audio Overload SDK
3 //
4 // Fake ao.h to set up the general Audio Overload style environment
5 //
6
7 #ifndef __AO_H
8 #define __AO_H
9
10 #ifdef HAVE_CONFIG_H
11 #include "../../config.h"
12 #endif
13
14 #define AO_SUCCESS 1
15 #define AO_FAIL 0
16 #define AO_FAIL_DECOMPRESSION -1
17
18 #define MAX_DISP_INFO_LENGTH 256
19 #define AUDIO_RATE (44100)
20
21 enum
22 {
23 COMMAND_NONE = 0,
24 COMMAND_PREV,
25 COMMAND_NEXT,
26 COMMAND_RESTART,
27 COMMAND_HAS_PREV,
28 COMMAND_HAS_NEXT,
29 COMMAND_GET_MIN,
30 COMMAND_GET_MAX,
31 COMMAND_JUMP
32 };
33
34 #if 0
35 /* Compiler defines for Xcode */
36 #ifdef __BIG_ENDIAN__
37 #undef LSB_FIRST
38 #endif
39
40 #ifdef __LITTLE_ENDIAN__
41 #define LSB_FIRST 1
42 #endif
43 #endif
44
45 #ifdef WORDS_BIGENDIAN
46 #undef LSB_FIRST
47 #else
48 #define LSB_FIRST 1
49 #endif
50
51 typedef unsigned char ao_bool;
52
53 #ifdef __GNUC__
54 #include <stddef.h> // get NULL
55 #include <stdbool.h>
56
57 #ifndef nil
58 #define nil NULL
59 #endif
60
61 #ifndef TRUE
62 #define TRUE (1)
63 #endif
64 #ifndef FALSE
65 #define FALSE (0)
66 #endif
67
68 #define xmalloc(a) malloc(a)
69
70 #endif
71
72 #ifdef _MSC_VER
73 #include <stddef.h> // get NULL
74 #include <wchar.h> // for off_t
75
76 #ifndef nil
77 #define nil NULL
78 #endif
79
80 #ifndef TRUE
81 #define TRUE (1)
82 #endif
83 #ifndef FALSE
84 #define FALSE (0)
85 #endif
86
87 #define true (1)
88 #define false (0)
89
90 #define xmalloc(a) malloc(a)
91
92 #define strcasecmp _strcmpi
93
94 #endif
95
96 #ifndef PATH_MAX
97 #define PATH_MAX 2048
98 #endif
99
100 typedef struct
101 {
102 char title[9][MAX_DISP_INFO_LENGTH];
103 char info[9][MAX_DISP_INFO_LENGTH];
104 } ao_display_info;
105
106 typedef unsigned char uint8;
107 typedef unsigned char UINT8;
108 typedef signed char int8;
109 typedef signed char INT8;
110 typedef unsigned short uint16;
111 typedef unsigned short UINT16;
112 typedef signed short int16;
113 typedef signed short INT16;
114 typedef signed int int32;
115 typedef unsigned int uint32;
116 #ifdef LONG_IS_64BIT
117 typedef signed long int64;
118 typedef unsigned long uint64;
119 #else
120 typedef signed long long int64;
121 typedef unsigned long long uint64;
122 #endif
123
124 typedef int8 s8;
125 typedef int16 s16;
126 typedef int32 s32;
127 typedef int64 s64;
128
129 typedef uint8 u8;
130 typedef uint16 u16;
131 typedef uint32 u32;
132 typedef uint64 u64;
133
134 #ifndef INLINE
135 #if defined(_MSC_VER)
136 #define INLINE __forceinline
137 #elif defined(__GNUC__)
138 #define INLINE __inline__
139 #elif defined(_MWERKS_)
140 #define INLINE inline
141 #elif defined(__powerc)
142 #define INLINE inline
143 #else
144 #define INLINE
145 #endif
146 #endif
147
148 #if LSB_FIRST
BFLIP16(u16 x)149 static INLINE u16 BFLIP16(u16 x)
150 {
151 return x;
152 }
153 #else
BFLIP16(u16 x)154 static INLINE u16 BFLIP16(u16 x)
155 {
156 return( ((x>>8)&0xFF)| ((x&0xFF)<<8) );
157 }
158 #endif
159
160 #ifdef WIN32
161 #ifndef _BASETSD_H
162 typedef signed int INT32;
163 typedef unsigned int UINT32;
164 typedef signed long long INT64;
165 typedef unsigned long long UINT64;
166 #endif
167 #else
168 typedef signed int INT32;
169 typedef unsigned int UINT32;
170 #ifdef LONG_IS_64BIT
171 typedef signed long INT64;
172 typedef unsigned long UINT64;
173 #else
174 typedef signed long long INT64;
175 typedef unsigned long long UINT64;
176 #endif
177 #endif
178
179 #if LSB_FIRST
180 #define LE16(x) (x)
181 #define LE32(x) (x)
182
183 #ifndef __ENDIAN__ /* Mac OS X Endian header has this function in it */
Endian32_Swap(unsigned long addr)184 static unsigned long INLINE Endian32_Swap(unsigned long addr)
185 {
186 unsigned long res = (((addr&0xff000000)>>24) |
187 ((addr&0x00ff0000)>>8) |
188 ((addr&0x0000ff00)<<8) |
189 ((addr&0x000000ff)<<24));
190
191 return res;
192 }
193 #endif
194
195 #else
196
LE16(unsigned short x)197 static unsigned short INLINE LE16(unsigned short x)
198 {
199 unsigned short res = (((x & 0xFF00) >> 8) | ((x & 0xFF) << 8));
200 return res;
201 }
202
LE32(unsigned long addr)203 static unsigned long INLINE LE32(unsigned long addr)
204 {
205 unsigned long res = (((addr&0xff000000)>>24) |
206 ((addr&0x00ff0000)>>8) |
207 ((addr&0x0000ff00)<<8) |
208 ((addr&0x000000ff)<<24));
209
210 return res;
211 }
212
213 #endif
214
215 int ao_get_lib(char *filename, uint8 **buffer, uint64 *length);
216
217 int ao_identify (char *buffer);
218
219 void *ao_start (uint32 type, const char *name, uint8 *buffer, uint32 size);
220
221 int ao_stop (uint32 type, void *handle);
222
223 int ao_get_info (uint32 type, void *handle, ao_display_info *info);
224
225 int ao_decode (uint32 type, void *handle, int16 *buffer, uint32 size);
226
227 int ao_command (uint32 type, void *handle, int32 command, int32 param);
228
229 void ao_getlibpath (const char *path, const char *libname, char *libpath, int size);
230
231 #endif // AO_H
232