#include <stdio.h>\r
#include "audio.h"\r
-#include "au_sb.h"\r
-\r
-struct audrv {\r
- void *(*get_buffer)(int *size);\r
- void (*start)(int rate, int bits, int nchan);\r
- void (*pause)(void);\r
- void (*cont)(void);\r
- void (*stop)(void);\r
- void (*volume)(int vol);\r
- int (*isplaying)(void);\r
-};\r
+#include "audrv.h"\r
\r
static struct audrv drv;\r
\r
static audio_callback_func cbfunc;\r
static void *cbcls;\r
\r
+/* driver detect/init functions are defined in their respective source files */\r
+int sb_detect(struct audrv *drv);\r
+\r
+\r
int audio_init(void)\r
{\r
- if(sb_detect()) {\r
- drv.get_buffer = sb_buffer;\r
- drv.start = sb_start;\r
- drv.pause = sb_pause;\r
- drv.cont = sb_continue;\r
- drv.stop = sb_stop;\r
- drv.volume = sb_volume;\r
- drv.isplaying = sb_isplaying;\r
+ if(sb_detect(&drv)) {\r
return 0;\r
}\r
\r
drv.stop();\r
}\r
\r
-void audio_volume(int vol)\r
+void audio_setvolume(int ctl, int vol)\r
+{\r
+ drv.setvolume(ctl, vol);\r
+}\r
+\r
+int audio_getvolume(int ctl)\r
{\r
- drv.volume(vol);\r
+ return drv.getvolume(ctl);\r
}\r
\r
int audio_isplaying(void)\r