diff options
author | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2001-11-13 17:59:51 +0000 |
---|---|---|
committer | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2001-11-13 17:59:51 +0000 |
commit | 40ff01806b091bd7c5419d8f411906d504d33252 (patch) | |
tree | f2aa8b3887ec019b6b0093707ab08b1afb03c19b | |
parent | 0f6cb05b7f5ef8cf5406a9ac77d28648c66a6017 (diff) | |
download | xine-lib-40ff01806b091bd7c5419d8f411906d504d33252.tar.gz xine-lib-40ff01806b091bd7c5419d8f411906d504d33252.tar.bz2 |
Tidy bits.
CVS patchset: 1029
CVS date: 2001/11/13 17:59:51
-rw-r--r-- | src/audio_out/audio_alsa_out.c | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/audio_out/audio_alsa_out.c b/src/audio_out/audio_alsa_out.c index 744a5ea9e..2d9923093 100644 --- a/src/audio_out/audio_alsa_out.c +++ b/src/audio_out/audio_alsa_out.c @@ -26,7 +26,7 @@ * (c) 2001 James Courtier-Dutton <James@superbug.demon.co.uk> * * - * $Id: audio_alsa_out.c,v 1.33 2001/11/13 14:37:48 jcdutton Exp $ + * $Id: audio_alsa_out.c,v 1.34 2001/11/13 17:59:51 jcdutton Exp $ */ #ifdef HAVE_CONFIG_H @@ -41,7 +41,7 @@ #include <fcntl.h> #include <math.h> #include <alloca.h> -#include <sys/asoundlib.h> +#include <alsa/asoundlib.h> #include <sys/ioctl.h> #include <inttypes.h> @@ -88,12 +88,6 @@ typedef struct alsa_driver_s { config_values_t *config; - char audio_default_device[20]; - char audio_front_device[20]; - char audio_surround40_device[20]; - char audio_surround50_device[20]; - char audio_surround51_device[20]; - char audio_a52_device[128]; snd_pcm_t *audio_fd; int capabilities; int open_mode; @@ -151,6 +145,7 @@ static long ao_alsa_get_volume_from_percent(int val, long min, long max) static int ao_alsa_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate, int mode) { alsa_driver_t *this = (alsa_driver_t *) this_gen; + config_values_t *config = this->config; char *pcm_device; snd_pcm_stream_t direction = SND_PCM_STREAM_PLAYBACK; snd_pcm_hw_params_t *params; @@ -174,28 +169,28 @@ static int ao_alsa_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate, int switch (mode) { case AO_CAP_MODE_MONO: this->num_channels = 1; - pcm_device = this->audio_default_device; + pcm_device = config->lookup_str(config,"alsa_default_device", "default"); break; case AO_CAP_MODE_STEREO: this->num_channels = 2; - pcm_device = this->audio_front_device; + pcm_device = config->lookup_str(config,"alsa_front_device", "default"); break; case AO_CAP_MODE_4CHANNEL: this->num_channels = 4; - pcm_device = this->audio_surround40_device; + pcm_device = config->lookup_str(config,"alsa_surround40_device", "surround40"); break; case AO_CAP_MODE_5CHANNEL: this->num_channels = 5; - pcm_device = this->audio_surround50_device; + pcm_device = config->lookup_str(config,"alsa_surround50_device", "surround51"); break; case AO_CAP_MODE_5_1CHANNEL: this->num_channels = 6; - pcm_device = this->audio_surround51_device; + pcm_device = config->lookup_str(config,"alsa_surround51_device", "surround51"); break; case AO_CAP_MODE_A52: case AO_CAP_MODE_AC5: this->num_channels = 2; - pcm_device = this->audio_a52_device; + pcm_device = config->lookup_str(config,"alsa_a52_device", "iec958:AES0=0x6,AES1=0x82,AES2=0x0,AES3=0x2"); break; default: printf ("audio_alsa_out: ALSA Driver does not support the requested mode: 0x%X\n",mode); @@ -572,6 +567,7 @@ static int ao_alsa_set_property (ao_driver_t *this_gen, int property, int value) static void ao_alsa_mixer_init(ao_driver_t *this_gen) { alsa_driver_t *this = (alsa_driver_t *) this_gen; config_values_t *config = this->config; + char *pcm_device; snd_ctl_card_info_t *hw_info; snd_ctl_t *ctl_handle; int err; @@ -584,8 +580,9 @@ static void ao_alsa_mixer_init(ao_driver_t *this_gen) { int sw; snd_ctl_card_info_alloca(&hw_info); + pcm_device = config->lookup_str(config,"alsa_default_device", "default"); - if ((err = snd_ctl_open (&ctl_handle, this->audio_default_device, 0)) < 0) { + if ((err = snd_ctl_open (&ctl_handle, pcm_device, 0)) < 0) { printf ("audio_alsa_out: snd_ctl_open(): %s\n", snd_strerror(err)); return; } @@ -606,7 +603,7 @@ static void ao_alsa_mixer_init(ao_driver_t *this_gen) { return; } - if ((err = snd_mixer_attach (this->mixer.handle, this->audio_default_device)) < 0) { + if ((err = snd_mixer_attach (this->mixer.handle, pcm_device)) < 0) { printf ("audio_alsa_out: snd_mixer_attach(): %s\n", snd_strerror(err)); snd_mixer_close(this->mixer.handle); return; @@ -740,19 +737,15 @@ ao_driver_t *init_audio_out_plugin (config_values_t *config) { this = (alsa_driver_t *) malloc (sizeof (alsa_driver_t)); snd_pcm_hw_params_alloca(¶ms); - + /* Fill the .xinerc file with options */ pcm_device = config->lookup_str(config,"alsa_default_device", "default"); - strcpy(this->audio_default_device,pcm_device); pcm_device = config->lookup_str(config,"alsa_front_device", "default"); - strcpy(this->audio_front_device,pcm_device); pcm_device = config->lookup_str(config,"alsa_surround40_device", "surround40"); - strcpy(this->audio_surround40_device,pcm_device); pcm_device = config->lookup_str(config,"alsa_surround50_device", "surround51"); - strcpy(this->audio_surround50_device,pcm_device); pcm_device = config->lookup_str(config,"alsa_surround51_device", "surround51"); - strcpy(this->audio_surround51_device,pcm_device); pcm_device = config->lookup_str(config,"alsa_a52_device", "iec958:AES0=0x6,AES1=0x82,AES2=0x0,AES3=0x2"); - strcpy(this->audio_a52_device,pcm_device); + /* Use the default device to open first */ + pcm_device = config->lookup_str(config,"alsa_default_device", "default"); /* * find best device driver/channel @@ -761,7 +754,7 @@ ao_driver_t *init_audio_out_plugin (config_values_t *config) { * open that device */ - err=snd_pcm_open(&this->audio_fd, this->audio_default_device, SND_PCM_STREAM_PLAYBACK, 0); + err=snd_pcm_open(&this->audio_fd, pcm_device, SND_PCM_STREAM_PLAYBACK, 0); if(err <0 ) { error("snd_pcm_open() failed: %d", err); error(">>> Check if another program don't already use PCM <<<"); |