Mercurial > mplayer.hg
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) { |