diff -urN mpg321-0.1.5/mad.c mpg321-0.1.5-new/mad.c --- mpg321-0.1.5/mad.c Wed Jul 18 02:39:34 2001 +++ mpg321-0.1.5-new/mad.c Wed Sep 12 15:49:36 2001 @@ -94,112 +94,35 @@ void open_ao_playdevice(struct mad_header const *header) { - int numChannels = MAD_NCHANNELS(header); - if(options.opt & MPG321_USE_WAV) - { - int driver_id = ao_get_driver_id("wav"); - ao_option_t *ao_options = NULL; + int numChannels = MAD_NCHANNELS(header); + int driver_id; + ao_sample_format format; - /* Don't have to check options.device here: we only define - MPG321_USE_WAV when -w is defined, and - is pointd to by options.device */ - ao_append_option(&ao_options, "file", options.device); + if (options.opt & MPG321_FILE_PLAY) { + fprintf (stderr, "wav output not supported yet\n"); + exit (-1); + } - if((playdevice=ao_open(driver_id, 16, header->samplerate, numChannels, ao_options))==NULL) - { - fprintf(stderr, "Error opening libao wav file driver.\n"); - exit(1); - } - } + if (!options.output || !*options.output) { + driver_id = ao_default_driver_id (); + } else { + driver_id = ao_driver_id (options.output); + if (driver_id == -1) { + fprintf (stderr, "couldn't find plugin \"%s\"\n", options.output); + exit (-1); + } + } - else if(options.opt & MPG321_USE_NULL) - { - int driver_id = ao_get_driver_id("null"); - if((playdevice = ao_open(driver_id, 0, 0, 0, NULL)) == NULL) - { - fprintf(stderr, "Error opening libao null driver.\n"); - exit(1); - } - } - - else if (options.opt & MPG321_USE_STDOUT) - { - ao_option_t * ao_options = NULL; - int driver_id = ao_get_driver_id("raw"); - - ao_append_option(&ao_options, "file", "-"); - - if((playdevice=ao_open(driver_id, 16, header->samplerate, numChannels, ao_options))==NULL) - { - fprintf(stderr, "Error opening libao raw output driver.\n"); - exit(1); - } - } - - else if(options.opt & MPG321_USE_ESD) - { - ao_option_t *ao_options = NULL; - int driver_id = ao_get_driver_id("esd"); - - if(options.device) - ao_append_option(&ao_options, "host", options.device); - - if((playdevice=ao_open(driver_id, 16, header->samplerate, numChannels, ao_options))==NULL) - { - fprintf(stderr, "Error opening libao esd driver.\n"); - exit(1); - } - } - - else if(options.opt & MPG321_USE_ALSA) - { - ao_option_t *ao_options = NULL; - int driver_id = ao_get_driver_id("alsa"); - char *c; - - if (options.device) - { - if ((c = strchr(options.device, ':')) == NULL || strlen(c+1) < 1) - { - fprintf(stderr, "Poorly formed ALSA card:device specification %s", options.device); - exit(1); - } - - *(c++) = '\0'; /* change the : to a null to create two separate strings */ - - ao_append_option(&ao_options, "card", options.device); - ao_append_option(&ao_options, "dev", c); - } - - if((playdevice=ao_open(driver_id, 16, header->samplerate, numChannels, ao_options))==NULL) - { - fprintf(stderr, "Error opening libao alsa driver.\n"); - exit(1); - } - } - - else - { - ao_option_t *ao_options = NULL; - int driver_id = ao_get_driver_id(AUDIO_DEFAULT); - - if (strcmp(AUDIO_DEFAULT, "oss") == 0) - { - if (options.device) - ao_append_option(&ao_options, "dsp", options.device); - } - else if (strcmp(AUDIO_DEFAULT, "sun") == 0) - { - if (options.device) - ao_append_option(&ao_options, "dev", options.device); - } + format.rate = header->samplerate; + format.channels = numChannels; + format.bits = 16; + format.byte_format = AO_FMT_LITTLE; - if((playdevice=ao_open(driver_id, 16, header->samplerate, numChannels, ao_options))==NULL) - { - fprintf(stderr, "Error opening libao oss driver.\n"); - exit(1); - } - } + playdevice = ao_open_live (driver_id, &format, NULL); + if (playdevice == NULL) { + fprintf (stderr, "error opening device \"%s\"\n", options.output); + exit (-1); + } } char * layerstring(enum mad_layer layer) diff -urN mpg321-0.1.5/mpg321.c mpg321-0.1.5-new/mpg321.c --- mpg321-0.1.5/mpg321.c Sat Aug 11 04:31:16 2001 +++ mpg321-0.1.5-new/mpg321.c Wed Sep 12 15:50:43 2001 @@ -53,7 +53,7 @@ int stop_playing_file = 0; int quit_now = 0; char *playlist_file; -ao_device_t *playdevice=NULL; +ao_device *playdevice=NULL; mad_timer_t current_time; mpg321_options options = { 0, NULL, 0 }; @@ -221,7 +221,7 @@ break; case 'q': - options.opt |= MPG321_QUIET_PLAY; + options.output = "null"; break; case 'R': @@ -238,11 +238,11 @@ break; case 't': - options.opt |= MPG321_USE_NULL; + options.output = "null"; break; case 'w': - options.opt |= MPG321_USE_WAV; + options.opt |= MPG321_FILE_PLAY; options.device = strdup(optarg); break; @@ -252,25 +252,13 @@ break; case 's': - options.opt |= MPG321_USE_STDOUT; + options.opt |= MPG321_FILE_PLAY; + options.device = "-"; break; case 'o': - if (strcmp(optarg, "alsa") == 0) - { - options.opt |= MPG321_USE_ALSA; - } - - else if (strcmp(optarg, "esd") == 0) - { - options.opt |= MPG321_USE_ESD; - } - - else - { - fprintf(stderr, "Option %s to --output not implemented or not understood.\n", optarg); - } - + options.output = strdup(optarg); + break; case 'g': @@ -328,6 +316,7 @@ /* Get the command line options */ options.volume = 100; + options.output = ""; /* also adds all playlist files to playlist pl */ parse_options(argc, argv, pl); diff -urN mpg321-0.1.5/mpg321.h mpg321-0.1.5-new/mpg321.h --- mpg321-0.1.5/mpg321.h Sat Aug 11 04:25:08 2001 +++ mpg321-0.1.5-new/mpg321.h Wed Sep 12 15:47:26 2001 @@ -59,13 +59,14 @@ typedef struct { int opt; + char *output; char *device; unsigned long seek; int volume; } mpg321_options; extern mpg321_options options; -extern ao_device_t *playdevice; +extern ao_device *playdevice; extern mad_timer_t current_time; extern int stop_playing_file; @@ -74,12 +75,7 @@ MPG321_VERBOSE_PLAY = 0x0001, MPG321_QUIET_PLAY = 0x0002, MPG321_REMOTE_PLAY = 0x0004, - - MPG321_USE_STDOUT = 0x0010, - MPG321_USE_ALSA = 0x0020, - MPG321_USE_ESD = 0x0040, - MPG321_USE_NULL = 0x0080, - MPG321_USE_WAV = 0x0100 + MPG321_FILE_PLAY = 0x0008, }; #define DEFAULT_PLAYLIST_SIZE 1024