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