1 /*
2     TiMidity++ -- MIDI to WAVE converter and player
3     Copyright (C) 1999-2002 Masanao Izumo <mo@goice.co.jp>
4     Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20 
21 /***************************************************************
22  name: ogg_dll  dll: ogg.dll
23 ***************************************************************/
24 
25 #ifdef HAVE_CONFIG_H
26 #include "config.h"
27 #endif /* HAVE_CONFIG_H */
28 #include "interface.h"
29 
30 #ifdef AU_VORBIS_DLL
31 
32 #include <windows.h>
33 #include <ogg/ogg.h>
34 
35 extern int load_ogg_dll(void);
36 extern void free_ogg_dll(void);
37 
38 typedef void (*type_oggpack_writeinit)(oggpack_buffer *b);
39 typedef void (*type_oggpack_reset)(oggpack_buffer *b);
40 typedef void (*type_oggpack_writeclear)(oggpack_buffer *b);
41 typedef void (*type_oggpack_readinit)(oggpack_buffer *b,unsigned char *buf,int bytes);
42 typedef void (*type_oggpack_write)(oggpack_buffer *b,unsigned long value,int bits);
43 typedef long (*type_oggpack_look)(oggpack_buffer *b,int bits);
44 typedef long (*type_oggpack_look_huff)(oggpack_buffer *b,int bits);
45 typedef long (*type_oggpack_look1)(oggpack_buffer *b);
46 typedef void (*type_oggpack_adv)(oggpack_buffer *b,int bits);
47 typedef int  (*type_oggpack_adv_huff)(oggpack_buffer *b,int bits);
48 typedef void (*type_oggpack_adv1)(oggpack_buffer *b);
49 typedef long (*type_oggpack_read)(oggpack_buffer *b,int bits);
50 typedef long (*type_oggpack_read1)(oggpack_buffer *b);
51 typedef long (*type_oggpack_bytes)(oggpack_buffer *b);
52 typedef long (*type_oggpack_bits)(oggpack_buffer *b);
53 typedef unsigned char*(*type_oggpack_get_buffer)(oggpack_buffer *b);
54 typedef int     (*type_ogg_stream_packetin)(ogg_stream_state *os, ogg_packet *op);
55 typedef int     (*type_ogg_stream_pageout)(ogg_stream_state *os, ogg_page *og);
56 typedef int     (*type_ogg_stream_flush)(ogg_stream_state *os, ogg_page *og);
57 typedef int     (*type_ogg_sync_init)(ogg_sync_state *oy);
58 typedef int     (*type_ogg_sync_clear)(ogg_sync_state *oy);
59 typedef int     (*type_ogg_sync_reset)(ogg_sync_state *oy);
60 typedef int(*type_ogg_sync_destroy)(ogg_sync_state *oy);
61 typedef char   *(*type_ogg_sync_buffer)(ogg_sync_state *oy, long size);
62 typedef int     (*type_ogg_sync_wrote)(ogg_sync_state *oy, long bytes);
63 typedef long    (*type_ogg_sync_pageseek)(ogg_sync_state *oy,ogg_page *og);
64 typedef int     (*type_ogg_sync_pageout)(ogg_sync_state *oy, ogg_page *og);
65 typedef int     (*type_ogg_stream_pagein)(ogg_stream_state *os, ogg_page *og);
66 typedef int     (*type_ogg_stream_packetout)(ogg_stream_state *os,ogg_packet *op);
67 typedef int     (*type_ogg_stream_init)(ogg_stream_state *os,int serialno);
68 typedef int     (*type_ogg_stream_clear)(ogg_stream_state *os);
69 typedef int     (*type_ogg_stream_reset)(ogg_stream_state *os);
70 typedef int     (*type_ogg_stream_destroy)(ogg_stream_state *os);
71 typedef int     (*type_ogg_stream_eos)(ogg_stream_state *os);
72 typedef int     (*type_ogg_page_version)(ogg_page *og);
73 typedef int     (*type_ogg_page_continued)(ogg_page *og);
74 typedef int     (*type_ogg_page_bos)(ogg_page *og);
75 typedef int     (*type_ogg_page_eos)(ogg_page *og);
76 typedef ogg_int64_t (*type_ogg_page_granulepos)(ogg_page *og);
77 typedef int     (*type_ogg_page_serialno)(ogg_page *og);
78 typedef long    (*type_ogg_page_pageno)(ogg_page *og);
79 typedef int     (*type_ogg_page_packets)(ogg_page *og);
80 ////typedef void    (*type_ogg_packet_clear)(ogg_packet *op);
81 
82 static struct ogg_dll_ {
83 //	 type_oggpack_writeinit oggpack_writeinit;
84 //	 type_oggpack_reset oggpack_reset;
85 //	 type_oggpack_writeclear oggpack_writeclear;
86 //	 type_oggpack_readinit oggpack_readinit;
87 //	 type_oggpack_write oggpack_write;
88 //	 type_oggpack_look oggpack_look;
89 //	 type_oggpack_look_huff oggpack_look_huff;
90 //	 type_oggpack_look1 oggpack_look1;
91 //	 type_oggpack_adv oggpack_adv;
92 //	 type_oggpack_adv_huff oggpack_adv_huff;
93 //	 type_oggpack_adv1 oggpack_adv1;
94 //	 type_oggpack_read oggpack_read;
95 //	 type_oggpack_read1 oggpack_read1;
96 //	 type_oggpack_bytes oggpack_bytes;
97 //	 type_oggpack_bits oggpack_bits;
98 //	 type_oggpack_get_buffer oggpack_get_buffer;
99 	 type_ogg_stream_packetin ogg_stream_packetin;
100 	 type_ogg_stream_pageout ogg_stream_pageout;
101 //	 type_ogg_stream_flush ogg_stream_flush;
102 //	 type_ogg_sync_init ogg_sync_init;
103 //	 type_ogg_sync_clear ogg_sync_clear;
104 //	 type_ogg_sync_reset ogg_sync_reset;
105 //	 type_ogg_sync_destroy ogg_sync_destroy;
106 //	 type_ogg_sync_buffer ogg_sync_buffer;
107 //	 type_ogg_sync_wrote ogg_sync_wrote;
108 //	 type_ogg_sync_pageseek ogg_sync_pageseek;
109 //	 type_ogg_sync_pageout ogg_sync_pageout;
110 //	 type_ogg_stream_pagein ogg_stream_pagein;
111 //	 type_ogg_stream_packetout ogg_stream_packetout;
112 	 type_ogg_stream_init ogg_stream_init;
113 	 type_ogg_stream_clear ogg_stream_clear;
114 //	 type_ogg_stream_reset ogg_stream_reset;
115 //	 type_ogg_stream_destroy ogg_stream_destroy;
116 //	 type_ogg_stream_eos ogg_stream_eos;
117 //	 type_ogg_page_version ogg_page_version;
118 //	 type_ogg_page_continued ogg_page_continued;
119 //	 type_ogg_page_bos ogg_page_bos;
120 	 type_ogg_page_eos ogg_page_eos;
121 //	 type_ogg_page_granulepos ogg_page_granulepos;
122 //	 type_ogg_page_serialno ogg_page_serialno;
123 //	 type_ogg_page_pageno ogg_page_pageno;
124 //	 type_ogg_page_packets ogg_page_packets;
125 ////	 type_ogg_packet_clear ogg_packet_clear;
126 } ogg_dll;
127 
128 static volatile HANDLE h_ogg_dll = NULL;
129 
130 void free_ogg_dll(void)
131 {
132 	if(h_ogg_dll){
133 		FreeLibrary(h_ogg_dll);
134 		h_ogg_dll = NULL;
135 	}
136 }
137 
138 int load_ogg_dll(void)
139 {
140 	if(!h_ogg_dll){
141 		h_ogg_dll = LoadLibrary("ogg.dll");
142 		if(!h_ogg_dll) return -1;
143 	}
144 //	ogg_dll.oggpack_writeinit = (type_oggpack_writeinit)GetProcAddress(h_ogg_dll,"oggpack_writeinit");
145 //	if(!ogg_dll.oggpack_writeinit){ free_ogg_dll(); return -1; }
146 //	ogg_dll.oggpack_reset = (type_oggpack_reset)GetProcAddress(h_ogg_dll,"oggpack_reset");
147 //	if(!ogg_dll.oggpack_reset){ free_ogg_dll(); return -1; }
148 //	ogg_dll.oggpack_writeclear = (type_oggpack_writeclear)GetProcAddress(h_ogg_dll,"oggpack_writeclear");
149 //	if(!ogg_dll.oggpack_writeclear){ free_ogg_dll(); return -1; }
150 //	ogg_dll.oggpack_readinit = (type_oggpack_readinit)GetProcAddress(h_ogg_dll,"oggpack_readinit");
151 //	if(!ogg_dll.oggpack_readinit){ free_ogg_dll(); return -1; }
152 //	ogg_dll.oggpack_write = (type_oggpack_write)GetProcAddress(h_ogg_dll,"oggpack_write");
153 //	if(!ogg_dll.oggpack_write){ free_ogg_dll(); return -1; }
154 //	ogg_dll.oggpack_look = (type_oggpack_look)GetProcAddress(h_ogg_dll,"oggpack_look");
155 //	if(!ogg_dll.oggpack_look){ free_ogg_dll(); return -1; }
156 //	ogg_dll.oggpack_look_huff = (type_oggpack_look_huff)GetProcAddress(h_ogg_dll,"oggpack_look_huff");
157 //	if(!ogg_dll.oggpack_look_huff){ free_ogg_dll(); return -1; }
158 //	ogg_dll.oggpack_look1 = (type_oggpack_look1)GetProcAddress(h_ogg_dll,"oggpack_look1");
159 //	if(!ogg_dll.oggpack_look1){ free_ogg_dll(); return -1; }
160 //	ogg_dll.oggpack_adv = (type_oggpack_adv)GetProcAddress(h_ogg_dll,"oggpack_adv");
161 //	if(!ogg_dll.oggpack_adv){ free_ogg_dll(); return -1; }
162 //	ogg_dll.oggpack_adv_huff = (type_oggpack_adv_huff)GetProcAddress(h_ogg_dll,"oggpack_adv_huff");
163 //	if(!ogg_dll.oggpack_adv_huff){ free_ogg_dll(); return -1; }
164 //	ogg_dll.oggpack_adv1 = (type_oggpack_adv1)GetProcAddress(h_ogg_dll,"oggpack_adv1");
165 //	if(!ogg_dll.oggpack_adv1){ free_ogg_dll(); return -1; }
166 //	ogg_dll.oggpack_read = (type_oggpack_read)GetProcAddress(h_ogg_dll,"oggpack_read");
167 //	if(!ogg_dll.oggpack_read){ free_ogg_dll(); return -1; }
168 //	ogg_dll.oggpack_read1 = (type_oggpack_read1)GetProcAddress(h_ogg_dll,"oggpack_read1");
169 //	if(!ogg_dll.oggpack_read1){ free_ogg_dll(); return -1; }
170 //	ogg_dll.oggpack_bytes = (type_oggpack_bytes)GetProcAddress(h_ogg_dll,"oggpack_bytes");
171 //	if(!ogg_dll.oggpack_bytes){ free_ogg_dll(); return -1; }
172 //	ogg_dll.oggpack_bits = (type_oggpack_bits)GetProcAddress(h_ogg_dll,"oggpack_bits");
173 //	if(!ogg_dll.oggpack_bits){ free_ogg_dll(); return -1; }
174 //	ogg_dll.oggpack_get_buffer = (type_oggpack_get_buffer)GetProcAddress(h_ogg_dll,"oggpack_get_buffer");
175 //	if(!ogg_dll.oggpack_get_buffer){ free_ogg_dll(); return -1; }
176 	ogg_dll.ogg_stream_packetin = (type_ogg_stream_packetin)GetProcAddress(h_ogg_dll,"ogg_stream_packetin");
177 	if(!ogg_dll.ogg_stream_packetin){ free_ogg_dll(); return -1; }
178 	ogg_dll.ogg_stream_pageout = (type_ogg_stream_pageout)GetProcAddress(h_ogg_dll,"ogg_stream_pageout");
179 	if(!ogg_dll.ogg_stream_pageout){ free_ogg_dll(); return -1; }
180 //	ogg_dll.ogg_stream_flush = (type_ogg_stream_flush)GetProcAddress(h_ogg_dll,"ogg_stream_flush");
181 //	if(!ogg_dll.ogg_stream_flush){ free_ogg_dll(); return -1; }
182 //	ogg_dll.ogg_sync_init = (type_ogg_sync_init)GetProcAddress(h_ogg_dll,"ogg_sync_init");
183 //	if(!ogg_dll.ogg_sync_init){ free_ogg_dll(); return -1; }
184 //	ogg_dll.ogg_sync_clear = (type_ogg_sync_clear)GetProcAddress(h_ogg_dll,"ogg_sync_clear");
185 //	if(!ogg_dll.ogg_sync_clear){ free_ogg_dll(); return -1; }
186 //	ogg_dll.ogg_sync_reset = (type_ogg_sync_reset)GetProcAddress(h_ogg_dll,"ogg_sync_reset");
187 //	if(!ogg_dll.ogg_sync_reset){ free_ogg_dll(); return -1; }
188 //	ogg_dll.ogg_sync_destroy = (type_ogg_sync_destroy)GetProcAddress(h_ogg_dll,"ogg_sync_destroy");
189 //	if(!ogg_dll.ogg_sync_destroy){ free_ogg_dll(); return -1; }
190 //	ogg_dll.ogg_sync_buffer = (type_ogg_sync_buffer)GetProcAddress(h_ogg_dll,"ogg_sync_buffer");
191 //	if(!ogg_dll.ogg_sync_buffer){ free_ogg_dll(); return -1; }
192 //	ogg_dll.ogg_sync_wrote = (type_ogg_sync_wrote)GetProcAddress(h_ogg_dll,"ogg_sync_wrote");
193 //	if(!ogg_dll.ogg_sync_wrote){ free_ogg_dll(); return -1; }
194 //	ogg_dll.ogg_sync_pageseek = (type_ogg_sync_pageseek)GetProcAddress(h_ogg_dll,"ogg_sync_pageseek");
195 //	if(!ogg_dll.ogg_sync_pageseek){ free_ogg_dll(); return -1; }
196 //	ogg_dll.ogg_sync_pageout = (type_ogg_sync_pageout)GetProcAddress(h_ogg_dll,"ogg_sync_pageout");
197 //	if(!ogg_dll.ogg_sync_pageout){ free_ogg_dll(); return -1; }
198 //	ogg_dll.ogg_stream_pagein = (type_ogg_stream_pagein)GetProcAddress(h_ogg_dll,"ogg_stream_pagein");
199 //	if(!ogg_dll.ogg_stream_pagein){ free_ogg_dll(); return -1; }
200 //	ogg_dll.ogg_stream_packetout = (type_ogg_stream_packetout)GetProcAddress(h_ogg_dll,"ogg_stream_packetout");
201 //	if(!ogg_dll.ogg_stream_packetout){ free_ogg_dll(); return -1; }
202 	ogg_dll.ogg_stream_init = (type_ogg_stream_init)GetProcAddress(h_ogg_dll,"ogg_stream_init");
203 	if(!ogg_dll.ogg_stream_init){ free_ogg_dll(); return -1; }
204 	ogg_dll.ogg_stream_clear = (type_ogg_stream_clear)GetProcAddress(h_ogg_dll,"ogg_stream_clear");
205 	if(!ogg_dll.ogg_stream_clear){ free_ogg_dll(); return -1; }
206 //	ogg_dll.ogg_stream_reset = (type_ogg_stream_reset)GetProcAddress(h_ogg_dll,"ogg_stream_reset");
207 //	if(!ogg_dll.ogg_stream_reset){ free_ogg_dll(); return -1; }
208 //	ogg_dll.ogg_stream_destroy = (type_ogg_stream_destroy)GetProcAddress(h_ogg_dll,"ogg_stream_destroy");
209 //	if(!ogg_dll.ogg_stream_destroy){ free_ogg_dll(); return -1; }
210 //	ogg_dll.ogg_stream_eos = (type_ogg_stream_eos)GetProcAddress(h_ogg_dll,"ogg_stream_eos");
211 //	if(!ogg_dll.ogg_stream_eos){ free_ogg_dll(); return -1; }
212 //	ogg_dll.ogg_page_version = (type_ogg_page_version)GetProcAddress(h_ogg_dll,"ogg_page_version");
213 //	if(!ogg_dll.ogg_page_version){ free_ogg_dll(); return -1; }
214 //	ogg_dll.ogg_page_continued = (type_ogg_page_continued)GetProcAddress(h_ogg_dll,"ogg_page_continued");
215 //	if(!ogg_dll.ogg_page_continued){ free_ogg_dll(); return -1; }
216 //	ogg_dll.ogg_page_bos = (type_ogg_page_bos)GetProcAddress(h_ogg_dll,"ogg_page_bos");
217 //	if(!ogg_dll.ogg_page_bos){ free_ogg_dll(); return -1; }
218 	ogg_dll.ogg_page_eos = (type_ogg_page_eos)GetProcAddress(h_ogg_dll,"ogg_page_eos");
219 	if(!ogg_dll.ogg_page_eos){ free_ogg_dll(); return -1; }
220 //	ogg_dll.ogg_page_granulepos = (type_ogg_page_granulepos)GetProcAddress(h_ogg_dll,"ogg_page_granulepos");
221 //	if(!ogg_dll.ogg_page_granulepos){ free_ogg_dll(); return -1; }
222 //	ogg_dll.ogg_page_serialno = (type_ogg_page_serialno)GetProcAddress(h_ogg_dll,"ogg_page_serialno");
223 //	if(!ogg_dll.ogg_page_serialno){ free_ogg_dll(); return -1; }
224 //	ogg_dll.ogg_page_pageno = (type_ogg_page_pageno)GetProcAddress(h_ogg_dll,"ogg_page_pageno");
225 //	if(!ogg_dll.ogg_page_pageno){ free_ogg_dll(); return -1; }
226 //	ogg_dll.ogg_page_packets = (type_ogg_page_packets)GetProcAddress(h_ogg_dll,"ogg_page_packets");
227 //	if(!ogg_dll.ogg_page_packets){ free_ogg_dll(); return -1; }
228 ////	ogg_dll.ogg_packet_clear = (type_ogg_packet_clear)GetProcAddress(h_ogg_dll,"ogg_packet_clear");
229 ////	if(!ogg_dll.ogg_packet_clear){ free_ogg_dll(); return -1; }
230 	return 0;
231 }
232 
233 #if 0
234 void oggpack_writeinit(oggpack_buffer *b)
235 {
236 	if(h_ogg_dll){
237 		ogg_dll.oggpack_writeinit(b);
238 	}
239 }
240 
241 void oggpack_reset(oggpack_buffer *b)
242 {
243 	if(h_ogg_dll){
244 		ogg_dll.oggpack_reset(b);
245 	}
246 }
247 
248 void oggpack_writeclear(oggpack_buffer *b)
249 {
250 	if(h_ogg_dll){
251 		ogg_dll.oggpack_writeclear(b);
252 	}
253 }
254 
255 void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes)
256 {
257 	if(h_ogg_dll){
258 		ogg_dll.oggpack_readinit(b,buf,bytes);
259 	}
260 }
261 
262 void oggpack_write(oggpack_buffer *b,unsigned long value,int bits)
263 {
264 	if(h_ogg_dll){
265 		ogg_dll.oggpack_write(b,value,bits);
266 	}
267 }
268 
269 long oggpack_look(oggpack_buffer *b,int bits)
270 {
271 	if(h_ogg_dll){
272 		return ogg_dll.oggpack_look(b,bits);
273 	}
274 	return (long )0;
275 }
276 
277 long oggpack_look_huff(oggpack_buffer *b,int bits)
278 {
279 	if(h_ogg_dll){
280 		return ogg_dll.oggpack_look_huff(b,bits);
281 	}
282 	return (long )0;
283 }
284 
285 long oggpack_look1(oggpack_buffer *b)
286 {
287 	if(h_ogg_dll){
288 		return ogg_dll.oggpack_look1(b);
289 	}
290 	return (long )0;
291 }
292 
293 void oggpack_adv(oggpack_buffer *b,int bits)
294 {
295 	if(h_ogg_dll){
296 		ogg_dll.oggpack_adv(b,bits);
297 	}
298 }
299 
300 int  oggpack_adv_huff(oggpack_buffer *b,int bits)
301 {
302 	if(h_ogg_dll){
303 		return ogg_dll.oggpack_adv_huff(b,bits);
304 	}
305 	return (int  )0;
306 }
307 
308 void oggpack_adv1(oggpack_buffer *b)
309 {
310 	if(h_ogg_dll){
311 		ogg_dll.oggpack_adv1(b);
312 	}
313 }
314 
315 long oggpack_read(oggpack_buffer *b,int bits)
316 {
317 	if(h_ogg_dll){
318 		return ogg_dll.oggpack_read(b,bits);
319 	}
320 	return (long )0;
321 }
322 
323 long oggpack_read1(oggpack_buffer *b)
324 {
325 	if(h_ogg_dll){
326 		return ogg_dll.oggpack_read1(b);
327 	}
328 	return (long )0;
329 }
330 
331 long oggpack_bytes(oggpack_buffer *b)
332 {
333 	if(h_ogg_dll){
334 		return ogg_dll.oggpack_bytes(b);
335 	}
336 	return (long )0;
337 }
338 
339 long oggpack_bits(oggpack_buffer *b)
340 {
341 	if(h_ogg_dll){
342 		return ogg_dll.oggpack_bits(b);
343 	}
344 	return (long )0;
345 }
346 
347 unsigned char*oggpack_get_buffer(oggpack_buffer *b)
348 {
349 	if(h_ogg_dll){
350 		return ogg_dll.oggpack_get_buffer(b);
351 	}
352 	return (unsigned char*)0;
353 }
354 #endif
355 
356 int     ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op)
357 {
358 	if(h_ogg_dll){
359 		return ogg_dll.ogg_stream_packetin(os,op);
360 	}
361 	return (int     )0;
362 }
363 
364 int     ogg_stream_pageout(ogg_stream_state *os, ogg_page *og)
365 {
366 	if(h_ogg_dll){
367 		return ogg_dll.ogg_stream_pageout(os,og);
368 	}
369 	return (int     )0;
370 }
371 
372 #if 0
373 int     ogg_stream_flush(ogg_stream_state *os, ogg_page *og)
374 {
375 	if(h_ogg_dll){
376 		return ogg_dll.ogg_stream_flush(os,og);
377 	}
378 	return (int     )0;
379 }
380 
381 int     ogg_sync_init(ogg_sync_state *oy)
382 {
383 	if(h_ogg_dll){
384 		return ogg_dll.ogg_sync_init(oy);
385 	}
386 	return (int     )0;
387 }
388 
389 int     ogg_sync_clear(ogg_sync_state *oy)
390 {
391 	if(h_ogg_dll){
392 		return ogg_dll.ogg_sync_clear(oy);
393 	}
394 	return (int     )0;
395 }
396 
397 int     ogg_sync_reset(ogg_sync_state *oy)
398 {
399 	if(h_ogg_dll){
400 		return ogg_dll.ogg_sync_reset(oy);
401 	}
402 	return (int     )0;
403 }
404 
405 intogg_sync_destroy(ogg_sync_state *oy)
406 {
407 	if(h_ogg_dll){
408 		return ogg_dll.ogg_sync_destroy(oy);
409 	}
410 	return (int)0;
411 }
412 
413 char   *ogg_sync_buffer(ogg_sync_state *oy, long size)
414 {
415 	if(h_ogg_dll){
416 		return ogg_dll.ogg_sync_buffer(oy,size);
417 	}
418 	return (char   *)0;
419 }
420 
421 int     ogg_sync_wrote(ogg_sync_state *oy, long bytes)
422 {
423 	if(h_ogg_dll){
424 		return ogg_dll.ogg_sync_wrote(oy,bytes);
425 	}
426 	return (int     )0;
427 }
428 
429 long    ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og)
430 {
431 	if(h_ogg_dll){
432 		return ogg_dll.ogg_sync_pageseek(oy,og);
433 	}
434 	return (long    )0;
435 }
436 
437 int     ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og)
438 {
439 	if(h_ogg_dll){
440 		return ogg_dll.ogg_sync_pageout(oy,og);
441 	}
442 	return (int     )0;
443 }
444 
445 int     ogg_stream_pagein(ogg_stream_state *os, ogg_page *og)
446 {
447 	if(h_ogg_dll){
448 		return ogg_dll.ogg_stream_pagein(os,og);
449 	}
450 	return (int     )0;
451 }
452 
453 int     ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op)
454 {
455 	if(h_ogg_dll){
456 		return ogg_dll.ogg_stream_packetout(os,op);
457 	}
458 	return (int     )0;
459 }
460 #endif
461 
462 int     ogg_stream_init(ogg_stream_state *os,int serialno)
463 {
464 	if(h_ogg_dll){
465 		return ogg_dll.ogg_stream_init(os,serialno);
466 	}
467 	return (int     )0;
468 }
469 
470 int     ogg_stream_clear(ogg_stream_state *os)
471 {
472 	if(h_ogg_dll){
473 		return ogg_dll.ogg_stream_clear(os);
474 	}
475 	return (int     )0;
476 }
477 
478 #if 0
479 int     ogg_stream_reset(ogg_stream_state *os)
480 {
481 	if(h_ogg_dll){
482 		return ogg_dll.ogg_stream_reset(os);
483 	}
484 	return (int     )0;
485 }
486 
487 int     ogg_stream_destroy(ogg_stream_state *os)
488 {
489 	if(h_ogg_dll){
490 		return ogg_dll.ogg_stream_destroy(os);
491 	}
492 	return (int     )0;
493 }
494 
495 int     ogg_stream_eos(ogg_stream_state *os)
496 {
497 	if(h_ogg_dll){
498 		return ogg_dll.ogg_stream_eos(os);
499 	}
500 	return (int     )0;
501 }
502 
503 int     ogg_page_version(ogg_page *og)
504 {
505 	if(h_ogg_dll){
506 		return ogg_dll.ogg_page_version(og);
507 	}
508 	return (int     )0;
509 }
510 
511 int     ogg_page_continued(ogg_page *og)
512 {
513 	if(h_ogg_dll){
514 		return ogg_dll.ogg_page_continued(og);
515 	}
516 	return (int     )0;
517 }
518 
519 int     ogg_page_bos(ogg_page *og)
520 {
521 	if(h_ogg_dll){
522 		return ogg_dll.ogg_page_bos(og);
523 	}
524 	return (int     )0;
525 }
526 #endif
527 
528 int     ogg_page_eos(ogg_page *og)
529 {
530 	if(h_ogg_dll){
531 		return ogg_dll.ogg_page_eos(og);
532 	}
533 	return (int     )0;
534 }
535 
536 #if 0
537 ogg_int64_t ogg_page_granulepos(ogg_page *og)
538 {
539 	if(h_ogg_dll){
540 		return ogg_dll.ogg_page_granulepos(og);
541 	}
542 	return (ogg_int64_t )0;
543 }
544 
545 int     ogg_page_serialno(ogg_page *og)
546 {
547 	if(h_ogg_dll){
548 		return ogg_dll.ogg_page_serialno(og);
549 	}
550 	return (int     )0;
551 }
552 
553 long    ogg_page_pageno(ogg_page *og)
554 {
555 	if(h_ogg_dll){
556 		return ogg_dll.ogg_page_pageno(og);
557 	}
558 	return (long    )0;
559 }
560 
561 int     ogg_page_packets(ogg_page *og)
562 {
563 	if(h_ogg_dll){
564 		return ogg_dll.ogg_page_packets(og);
565 	}
566 	return (int     )0;
567 }
568 #endif
569 
570 //void    ogg_packet_clear(ogg_packet *op)
571 //{
572 //	if(h_ogg_dll){
573 //		ogg_dll.ogg_packet_clear(op);
574 //	}
575 //}
576 
577 /***************************************************************/
578 #endif /* AU_VORBIS_DLL */
579