source: roaraudio/roard/driver.c @ 5910:cb47378a0e0b

roaraudio init
Last change on this file since 5910:cb47378a0e0b was 0:2a41d2f42394, checked in by phi, 16 years ago

Initial revision

File size: 2.4 KB
Line 
1
2
3#include "roard.h"
4
5struct roar_driver g_driver[] = {
6 { "null", "null audio driver", "/dev/null", NULL, NULL, NULL, NULL, NULL, NULL},
7#ifdef ROAR_HAVE_ESD
8 { "esd", "EsounD audio driver", "localhost, remote.host.dom", driver_esd_open, driver_esd_close, driver_esd_pause, driver_esd_write, driver_esd_read, driver_esd_flush},
9#endif
10 { "roar", "RoarAudio driver", "localhost, remote.host.dom", driver_roar_open, driver_roar_close, driver_roar_pause, driver_roar_write, driver_roar_read, driver_roar_flush},
11#ifdef ROAR_HAVE_LIBAO
12 { "ao", "libao audio driver", "DRIVER", driver_ao_open, driver_ao_close, driver_ao_pause, driver_ao_write, driver_ao_read, driver_ao_flush},
13#endif
14 {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} // end of list
15                                };
16
17void print_driverlist (void) {
18 int i;
19
20 for (i = 0; g_driver[i].name != NULL; i++) {
21  printf("  %-8s - %s (devices: %s)\n", g_driver[i].name, g_driver[i].desc, g_driver[i].devices);
22 }
23}
24
25int driver_open (DRIVER_USERDATA_T * inst, int * driver_id, char * driver, char * device, struct roar_audio_info * info) {
26 int i;
27
28 if ( driver == NULL )
29  driver = ROAR_DRIVER_DEFAULT;
30
31 for (i = 0; g_driver[i].name != NULL; i++) {
32  if ( strcmp(g_driver[i].name, driver) == 0 ) {
33   ROAR_DBG("driver_open(*): found driver: id = %i", i);
34
35   *driver_id = i;
36
37   if ( g_driver[i].open )
38    return g_driver[i].open(inst, device, info);
39   return 0;
40  }
41 }
42
43 return -1;
44}
45
46int driver_close(DRIVER_USERDATA_T   inst, int driver) {
47 ROAR_DBG("driver_close(inst=%p, driver=%i) = ?", inst, driver);
48
49 if ( driver == -1 )
50  return -1;
51
52 if ( g_driver[driver].close )
53  return g_driver[driver].close(inst);
54
55 return 0;
56}
57
58int driver_pause(DRIVER_USERDATA_T   inst, int driver, int newstate) {
59 if ( driver == -1 )
60  return -1;
61
62 if ( g_driver[driver].pause )
63  return g_driver[driver].pause(inst, newstate);
64
65 return 0;
66}
67
68int driver_write(DRIVER_USERDATA_T   inst, int driver, char * buf, int len) {
69 if ( driver == -1 )
70  return -1;
71
72 if ( g_driver[driver].write )
73  return g_driver[driver].write(inst, buf, len);
74
75 return 0;
76}
77
78int driver_read (DRIVER_USERDATA_T   inst, int driver, char * buf, int len) {
79 if ( driver == -1 )
80  return -1;
81
82 if ( g_driver[driver].read )
83  return g_driver[driver].read(inst, buf, len);
84
85 return 0;
86}
87
88int driver_flush(DRIVER_USERDATA_T   inst, int driver) {
89 if ( driver == -1 )
90  return -1;
91
92 if ( g_driver[driver].flush )
93  return g_driver[driver].flush(inst);
94
95 return 0;
96}
97
98//ll
Note: See TracBrowser for help on using the repository browser.