From 537d953fb5af6a66950a333ac7bbdec2b525087a Mon Sep 17 00:00:00 2001 From: "johan@henkens.com" Date: Tue, 19 Apr 2011 04:07:44 -0700 Subject: [PATCH] Added basic support to set audio output device in windows seven. --- hairtunes.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/hairtunes.c b/hairtunes.c index 31670c69..d0423ddf 100644 --- a/hairtunes.c +++ b/hairtunes.c @@ -69,6 +69,12 @@ int fmtp[32]; int sampling_rate; int frame_size; +//Audio Device/driver variables +// Max num of chars " " - 32 character string, 1 reserved for null +char *audiodevice = "Speakers (Realtek High Definiti"; +char *audiodriver = "wmm"; +char *audiodeviceid = 0; + // FIFO name and file handle char *pipename = 0; int pipe_handle = -1; @@ -740,16 +746,31 @@ void init_pipe(char* pipe) { void* init_ao() { ao_initialize(); int driver = ao_default_driver_id(); - ao_sample_format fmt; - memset(&fmt, 0, sizeof(fmt)); - + ao_option aoo; + ao_option *ao_opts=0; + memset(&fmt, 0, sizeof(fmt)); + fmt.bits = 16; fmt.rate = sampling_rate; fmt.channels = NUM_CHANNELS; - fmt.byte_format = AO_FMT_NATIVE; - - ao_device *dev = ao_open_live(driver, &fmt, 0); + fmt.byte_format = AO_FMT_LITTLE; + + if(audiodriver!=0){ + driver = ao_driver_id(audiodriver); + } + if(audiodeviceid!=0){ + aoo.key="id"; + aoo.value=audiodeviceid; + aoo.next=NULL; + ao_opts=&aoo; + } else if(audiodevice!=0){ + aoo.key="dev"; + aoo.value=audiodevice; + aoo.next=NULL; + ao_opts=&aoo; + } + ao_device *dev = ao_open_live(driver, &fmt, ao_opts); return dev; }