--- libao2/ao_alsa9.c.orig Wed Jul 30 11:29:25 2003 +++ libao2/ao_alsa9.c Wed Jul 30 13:41:02 2003 @@ -285,7 +285,6 @@ default: break; } - bytes_per_sample = ao_data.bps / ao_data.samplerate; if (ao_subdevice) { //start parsing ao_subdevice, ugly and not thread safe! @@ -544,6 +543,18 @@ return (0); } + if ((err = snd_pcm_hw_params_test_format(alsa_handler, alsa_hwparams, + alsa_format)) < 0) + { + printf("alsa-init: format %s are not supported by hardware, trying default\n", + audio_out_format_name(format)); + alsa_format = SND_PCM_FORMAT_S16_LE; + ao_data.format = AFMT_S16_LE; + ao_data.bps = channels * rate_hz * 2; + } + + bytes_per_sample = ao_data.bps / ao_data.samplerate; //it should be here + if ((err = snd_pcm_hw_params_set_format(alsa_handler, alsa_hwparams, alsa_format)) < 0) {