source: roaraudio/roard/driver_ao.c @ 0:2a41d2f42394

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

Initial revision

File size: 1.2 KB
Line 
1//driver_esd.c:
2
3#include "roard.h"
4
5int driver_ao_open(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info) {
6 ao_device        * aodevice;
7 ao_sample_format     format;
8 int driver;
9
10 ao_initialize();
11
12 if ( device == NULL ) {
13  driver = ao_default_driver_id();
14 } else {
15  if ( (driver = ao_driver_id(device)) == -1 ) {
16   ROAR_ERR("Can not open audio device via libao's driver '%s'", device);
17   return -1;
18  }
19 }
20
21 format.bits        = info->bits;
22 format.channels    = info->channels;
23 format.rate        = info->rate;
24 format.byte_format = AO_FMT_NATIVE;
25
26 aodevice = ao_open_live(driver, &format, NULL /* no options */);
27
28 if ( aodevice == NULL ) {
29  ROAR_ERR("Can not open audio device via libao.");
30  return -1;
31 }
32
33 *((ao_device**)inst) = aodevice;
34
35 return 0;
36}
37
38int driver_ao_close(DRIVER_USERDATA_T   inst) {
39
40 ao_close((ao_device*)inst);
41
42 ao_shutdown();
43
44 return -1;
45}
46
47int driver_ao_pause(DRIVER_USERDATA_T   inst, int newstate) {
48 return -1;
49}
50
51int driver_ao_write(DRIVER_USERDATA_T   inst, char * buf, int len) {
52 return ao_play((ao_device*)inst, buf, len);
53}
54
55int driver_ao_read(DRIVER_USERDATA_T   inst, char * buf, int len) {
56 return -1;
57}
58
59int driver_ao_flush(DRIVER_USERDATA_T   inst) {
60 return 0;
61}
62
63//ll
Note: See TracBrowser for help on using the repository browser.