comparison libao2/ao_oss.c @ 5790:d141f1e9cc36

AFMT_AC3 autodetect/fallback to S16
author arpi
date Mon, 22 Apr 2002 22:33:06 +0000
parents 6bbf3271a694
children 02576893af2a
comparison
equal deleted inserted replaced
5789:0132c5747e8a 5790:d141f1e9cc36
121 121
122 if(format == AFMT_AC3) { 122 if(format == AFMT_AC3) {
123 ao_data.samplerate=rate; 123 ao_data.samplerate=rate;
124 ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate); 124 ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate);
125 } 125 }
126 126
127 ac3_retry:
127 ao_data.format=format; 128 ao_data.format=format;
128 ioctl (audio_fd, SNDCTL_DSP_SETFMT, &ao_data.format); 129 if( ioctl(audio_fd, SNDCTL_DSP_SETFMT, &ao_data.format)<0 ||
129 if(format == AFMT_AC3 && ao_data.format != AFMT_AC3) { 130 ao_data.format != format) if(format == AFMT_AC3){
130 printf("Can't set audio device %s to AC3 output\n", dsp); 131 printf("Can't set audio device %s to AC3 output, trying S16...\n", dsp);
131 return 0; 132 #ifdef WORDS_BIGENDIAN
133 format=AFMT_S16_BE;
134 #else
135 format=AFMT_S16_LE;
136 #endif
137 goto ac3_retry;
132 } 138 }
133 printf("audio_setup: sample format: %s (requested: %s)\n", 139 printf("audio_setup: sample format: %s (requested: %s)\n",
134 audio_out_format_name(ao_data.format), audio_out_format_name(format)); 140 audio_out_format_name(ao_data.format), audio_out_format_name(format));
135 141
136 if(format != AFMT_AC3) { 142 if(format != AFMT_AC3) {