comparison AIL.h @ 0:9c0607679772

init
author Ritor1
date Sat, 12 Jan 2013 09:45:18 +0600
parents
children 739d8f3b50f9
comparison
equal deleted inserted replaced
-1:000000000000 0:9c0607679772
1 #pragma once
2 #include "OSAPI.h"
3
4
5
6 /* 252 */
7 enum AILFILETYPE : __int32
8 {
9 AILFILETYPE_UNKNOWN = 0x0,
10 AILFILETYPE_PCM_WAV = 0x1,
11 AILFILETYPE_ADPCM_WAV = 0x2,
12 AILFILETYPE_OTHER_WAV = 0x3,
13 AILFILETYPE_VOC = 0x4,
14 AILFILETYPE_MIDI = 0x5,
15 AILFILETYPE_XMIDI = 0x6,
16 AILFILETYPE_7 = 0x7,
17 AILFILETYPE_XMIDI_MLS = 0x8,
18 AILFILETYPE_DLS = 0x9,
19 AILFILETYPE_MLS = 0xA,
20 AILFILETYPE_MPEG_L1_AUDIO = 0xB,
21 AILFILETYPE_MPEG_L2_AUDIO = 0xC,
22 AILFILETYPE_MPEG_L3_AUDIO = 0xD,
23 AILFILETYPE_OTHER_ASI_WAV = 0xE,
24 AILFILETYPE_OTHER_ASI_F = 0xF,
25 };
26
27
28
29 /* 253 */
30 #pragma pack(push, 1)
31 struct AILSOUNDINFO
32 {
33 int uFormat;
34 void *pData;
35 unsigned int uDataSize;
36 unsigned int uRate;
37 int uBits;
38 int uChannels;
39 unsigned int uSamples;
40 unsigned int uBlockSize;
41 void *pInitial;
42 };
43 #pragma pack(pop)
44
45
46
47
48 //Bink
49 typedef struct _BINK *HBINK;
50 typedef struct _BINKBUF *HBINKBUF;
51 //Smacker & AIL types
52 typedef struct _DIG_DRIVER *HDIGDRIVER;
53 typedef struct _SMACK *HSMACK;
54 typedef struct _SMACKBLIT *HSMACKBLIT;
55 typedef struct _SMACKBUF *HSMACKBUF;
56 //AIL
57 typedef struct _REDBOOK *HREDBOOK;
58 typedef struct _SAMPLE *HSAMPLE;
59 typedef struct _PROVIDER *HPROVIDER;
60 typedef struct _SEQUENCE *HSEQUENCE;
61 typedef struct _STREAM *HSTREAM;
62 typedef __int32 HATTRIB;
63 typedef __int32 HASISTREAM; // Handle to stream being managed by ASI codec
64
65
66
67 void MSS32_DLL_Initialize();
68
69 #define AILCALL __stdcall
70 #define AILCALLBACK __stdcall
71
72
73 typedef __int32 (AILCALLBACK FAR * AILASIFETCHCB) (unsigned __int32 user, // User value passed to ASI_open_stream()
74 void FAR *dest, // Location to which stream data should be copied by app
75 __int32 bytes_requested, // # of bytes requested by ASI codec
76 __int32 offset); // If not -1, application should seek to this point in stream
77
78 typedef HASISTREAM (AILCALL FAR *ASI_STREAM_OPEN) (unsigned __int32 user, // User value passed to fetch callback
79 AILASIFETCHCB fetch_CB, // Source data fetch handler
80 unsigned __int32 total_size); // Total size for %-done calculations (0=unknown)
81 typedef __int32 (AILCALL FAR *ASI_STREAM_PROCESS) (HASISTREAM stream, // Handle of stream
82 void FAR *buffer, // Destination for processed data
83 __int32 buffer_size); // # of bytes to return in buffer
84 typedef __int32 (AILCALL FAR *ASI_STREAM_SEEK) (HASISTREAM stream,
85 __int32 stream_offset);
86 typedef __int32 (AILCALL FAR *ASI_STREAM_CLOSE) (HASISTREAM stream);
87 typedef __int32 (AILCALL FAR *ASI_STREAM_ATTRIBUTE) (HASISTREAM stream,
88 HATTRIB attrib);
89 typedef __int32 (AILCALL FAR *ASI_STREAM_SET_PREFERENCE) (HASISTREAM stream,
90 HATTRIB preference,
91 void const FAR * value);
92
93 typedef struct
94 {
95 ASI_STREAM_OPEN ASI_stream_open;
96 ASI_STREAM_PROCESS ASI_stream_process;
97 ASI_STREAM_SEEK ASI_stream_seek;
98 ASI_STREAM_CLOSE ASI_stream_close;
99 ASI_STREAM_ATTRIBUTE ASI_stream_attribute;
100 ASI_STREAM_SET_PREFERENCE ASI_stream_set_preference;
101
102 HATTRIB INPUT_BIT_RATE;
103 HATTRIB INPUT_SAMPLE_RATE;
104 HATTRIB INPUT_BITS;
105 HATTRIB INPUT_CHANNELS;
106 HATTRIB OUTPUT_BIT_RATE;
107 HATTRIB OUTPUT_SAMPLE_RATE;
108 HATTRIB OUTPUT_BITS;
109 HATTRIB OUTPUT_CHANNELS;
110 HATTRIB POSITION;
111 HATTRIB PERCENT_DONE;
112 HATTRIB MIN_INPUT_BLOCK_SIZE;
113 HATTRIB RAW_RATE;
114 HATTRIB RAW_BITS;
115 HATTRIB RAW_CHANNELS;
116 HATTRIB REQUESTED_RATE;
117 HATTRIB REQUESTED_BITS;
118 HATTRIB REQUESTED_CHANS;
119
120 HASISTREAM stream;
121 }
122 ASISTAGE;
123
124
125
126
127 typedef void (AILCALLBACK FAR* AILSTREAMCB)(HSTREAM stream);
128 typedef struct _STREAM {
129
130 __int32 block_oriented; // 1 if this is an ADPCM or ASI-compressed stream
131 __int32 using_ASI; // 1 if using ASI decoder to uncompress stream data
132 ASISTAGE FAR *ASI; // handy pointer to our ASI coded
133
134 HSAMPLE samp; // the sample handle
135
136 unsigned __int32 fileh; // the open file handle
137
138 unsigned __int8 FAR* bufs[3]; // the data buffers
139 unsigned __int32 bufsizes[3]; // the size of each buffer
140 __int32 reset_ASI[3]; // should we reset the ASI at the end of the buffer?
141 __int32 bufstart[3]; // offset of where this buffer started
142 void FAR* asyncs[3];// async read structures
143
144 __int32 loadedbufstart[2]; // offset of where the loaded buffer started
145 __int32 loadedorder[2]; // order of the buffers as they were loaded
146 __int32 loadorder; // incremented as each buffer is loaded
147
148 __int32 bufsize; // size of each buffer
149 __int32 readsize; // size of each read block
150
151 unsigned __int32 buf1; // 0,1,2 (current buffer that we are reading into)
152 __int32 size1; // holds the current amount of data read
153
154 unsigned __int32 buf2; // 0,1,2 (the next buffer that we are reading into)
155 __int32 size2; // next buffer loaded up to
156
157 unsigned __int32 buf3; // 0,1,2 (the next buffer that we are reading into)
158 __int32 size3; // next buffer loaded up to
159
160 unsigned __int32 datarate; // datarate in bytes per second
161 __int32 filerate; // original datarate of the file
162 __int32 filetype; // file format type
163 unsigned __int32 fileflags; // file format flags (signed or unsigned)
164 __int32 totallen; // total length of the sound data
165
166 __int32 substart; // subblock loop start
167 __int32 sublen; // subblock loop len
168 __int32 subpadding; // amount to pad the final block
169
170 unsigned __int32 blocksize; // ADPCM block size
171 __int32 padding; // padding to be done
172 __int32 padded; // padding done
173
174 __int32 loadedsome; // have we done any loads?
175
176 unsigned __int32 startpos; // point that the sound data begins
177 unsigned __int32 totalread; // total bytes read from the disk
178
179 unsigned __int32 loopsleft; // how many loops are left
180
181 unsigned __int32 error; // read error has occurred
182
183 __int32 preload; // preload the file into the first buffer
184 unsigned __int32 preloadpos; // position to use in preload
185 __int32 noback; // no background processing
186 __int32 alldone; // alldone
187 __int32 primeamount; // amount to load after a seek
188 __int32 readatleast; // forced amount to read on next service
189
190 __int32 playcontrol; // control: 0=stopped, 1=started, |8=paused, |16=sample paused
191
192 AILSTREAMCB callback; // end of stream callback
193
194 __int32 user_data[8]; // Miscellaneous user data
195 void FAR* next; // pointer to next stream
196
197 #if defined(IS_WINDOWS) || defined(IS_MAC)
198 __int32 autostreaming; // are we autostreaming this stream
199 #endif
200
201 #ifdef IS_WINDOWS
202 __int32 cb_IsWin32s; // Is the callback win32s?
203 #endif
204 __int32 docallback; // set when it time to poll for a callback
205 #ifdef IS_MAC
206 IOParam stream_param;
207 __int32 donext;
208 __int32 donext1;
209 unsigned __int32 fillup;
210 unsigned __int32 session;
211 unsigned __int32 tamt;
212 unsigned __int32 buf;
213 __int32* size;
214 __int32* done;
215 __int32 done1;
216 __int32 done2;
217 __int32 done3;
218 Boolean force_quit;
219 #endif
220
221 } MSTREAM_TYPE;
222
223
224
225
226
227
228
229
230 int __stdcall AIL_startup();
231 HREDBOOK __stdcall AIL_redbook_open_drive(long drive);
232 HREDBOOK __stdcall AIL_redbook_open(int);
233 int __stdcall AIL_set_preference(unsigned int number, int value);
234 int __stdcall AIL_waveOutOpen(HDIGDRIVER *drv, HWAVEOUT *phWaveOut, int wDeviceID, WAVEFORMAT *pFormat);
235 int __stdcall AIL_get_preference(unsigned int number);
236 int __stdcall AIL_digital_configuration(HDIGDRIVER drv, int *rate, int *format, char *string);
237 HSAMPLE __stdcall AIL_allocate_sample_handle(HDIGDRIVER hDrv);
238 unsigned int __stdcall AIL_redbook_tracks(HREDBOOK hRedbook);
239 int __stdcall AIL_redbook_volume(HREDBOOK hRedbook);
240 unsigned int __stdcall AIL_redbook_stop(HREDBOOK hRedbook);
241 void __stdcall AIL_set_digital_master_volume(HDIGDRIVER hDrv, float master_volume);
242 int __stdcall AIL_redbook_set_volume(HREDBOOK hRedbook, int volume);
243 unsigned int __stdcall AIL_redbook_pause(HREDBOOK hRedbook);
244 void __stdcall AIL_redbook_track_info(HREDBOOK hRedbook, unsigned int uTrackNum, unsigned int *pStartMS, unsigned int *pEndMS);
245 unsigned int __stdcall AIL_redbook_play(HREDBOOK hRedbook, unsigned int uStartMS, unsigned int uEndMS);
246 unsigned int __stdcall AIL_redbook_resume(HREDBOOK);
247 int __stdcall AIL_enumerate_3D_providers(int *a1, HPROVIDER *pOutProv, char **pOutName);
248 DWORD __stdcall AIL_open_3D_provider(HPROVIDER a2);
249 int __stdcall AIL_3D_provider_attribute(HPROVIDER a1, const char *a2, int *a3);
250 int __stdcall AIL_set_3D_provider_preference(HPROVIDER a1, const char *a2, int *a3);
251 int __stdcall AIL_waveOutClose(_DIG_DRIVER *);
252 int __stdcall AIL_allocate_3D_sample_handle(HPROVIDER);
253 int __stdcall AIL_set_3D_sample_float_distances(void *a1, long a2, long a3, long a4, long a5);
254 int __stdcall AIL_set_3D_sample_volume(void *a1, long a2);
255 int __stdcall AIL_release_sample_handle(void *a1);
256 int __stdcall AIL_3D_position(void *a1, int *a2, float *a3, long *a4);
257 int __stdcall AIL_set_3D_sample_file(long a1, void *a2);
258 int __stdcall AIL_set_3D_sample_loop_count(long a1, long a2);
259 int __stdcall AIL_start_3D_sample(long a1);
260 int __stdcall AIL_set_3D_position(void *hSample, long a2, long a3, long a4);
261 int __stdcall AIL_set_3D_orientation(void *hSample, long a2, long a3, long a4, long a5, long a6, long a7);
262 int __stdcall AIL_release_3D_sample_handle(void *hHandle);
263
264 int __stdcall AIL_close_3D_provider(HPROVIDER);
265 int __stdcall AIL_redbook_close(HREDBOOK);
266
267 // sub_4D8344: using guessed type int __stdcall AIL_shutdown();
268 int __stdcall AIL_shutdown();
269
270 int __stdcall AIL_end_sample(HSAMPLE a1);
271 int __stdcall AIL_end_3D_sample(void *a1);
272 void __stdcall AIL_end_sequence(HSEQUENCE a1);
273 void __stdcall AIL_pause_stream(HSTREAM a1, int onoff);
274 int __stdcall AIL_set_sample_file(HSAMPLE, const void *file_image, int block);
275 void __stdcall AIL_start_sample(HSAMPLE);
276 void __stdcall AIL_set_sample_playback_rate(HSAMPLE, int rate);
277 void __stdcall AIL_sample_ms_position(HSAMPLE, int *pTotalMS, int *pCurrentMS);
278 int __stdcall AIL_3D_sample_status(void *a1);
279
280
281 namespace AIL
282 {
283 namespace Sample
284 {
285 enum Status
286 {
287 Free = 1, // Sample is available for allocation
288 Done = 2, // Sample has finished playing, or has never been started
289 Playing = 4, // Sample is playing
290 Stopped = 8, // Sample has been stopped
291 PlayingButReleased = 16 // Sample is playing, but digital handle has been temporarily released
292 };
293 };
294 };
295 AIL::Sample::Status __stdcall AIL_sample_status(HSAMPLE a1);
296
297
298 void __stdcall AIL_set_sample_loop_count(HSAMPLE, int);
299 int __stdcall AIL_set_sample_volume(HSAMPLE a1, long a2);
300
301
302 int __stdcall AIL_sample_volume(HSAMPLE);
303 void __stdcall AIL_init_sample(HSAMPLE);
304 int __stdcall AIL_set_sample_pan(HSAMPLE, long a2);
305 AILFILETYPE __stdcall AIL_file_type(void *pSoundBytes, int numBytes);
306 int __stdcall AIL_WAV_info(void *pSoundBytes, AILSOUNDINFO *pInfo);
307 int __stdcall AIL_decompress_ADPCM(AILSOUNDINFO *pInfo, void *a2, void *a3);
308 int __stdcall AIL_mem_free_lock(void *a1);
309
310
311
312
313
314
315
316
317
318