X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dos_auplay;a=blobdiff_plain;f=src%2Faudio.c;fp=src%2Faudio.c;h=0e16101f821784f634ef192109de45297b1485c8;hp=51a3521b8e6740fdb50c0cc34dc62e60fd56a9c0;hb=6e29178202fe1876a0fb0231e71fa0e75a7b6460;hpb=43cd2e73225cd66e61d1e9754afcaa7eca02fcb7 diff --git a/src/audio.c b/src/audio.c index 51a3521..0e16101 100644 --- a/src/audio.c +++ b/src/audio.c @@ -1,32 +1,19 @@ #include #include "audio.h" -#include "au_sb.h" - -struct audrv { - void *(*get_buffer)(int *size); - void (*start)(int rate, int bits, int nchan); - void (*pause)(void); - void (*cont)(void); - void (*stop)(void); - void (*volume)(int vol); - int (*isplaying)(void); -}; +#include "audrv.h" static struct audrv drv; static audio_callback_func cbfunc; static void *cbcls; +/* driver detect/init functions are defined in their respective source files */ +int sb_detect(struct audrv *drv); + + int audio_init(void) { - if(sb_detect()) { - drv.get_buffer = sb_buffer; - drv.start = sb_start; - drv.pause = sb_pause; - drv.cont = sb_continue; - drv.stop = sb_stop; - drv.volume = sb_volume; - drv.isplaying = sb_isplaying; + if(sb_detect(&drv)) { return 0; } @@ -69,9 +56,14 @@ void audio_stop(void) drv.stop(); } -void audio_volume(int vol) +void audio_setvolume(int ctl, int vol) +{ + drv.setvolume(ctl, vol); +} + +int audio_getvolume(int ctl) { - drv.volume(vol); + return drv.getvolume(ctl); } int audio_isplaying(void)