diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-04-22 22:33:06 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-04-22 22:33:06 +0000 |
commit | ceda76523a167b9d47cdc32b1738fe848c257323 (patch) | |
tree | 8e582bf1f0dc89cad4abcf2e89088dc3b42a9d31 /libao2/ao_oss.c | |
parent | b8f39a4f863e6da5eb7b98c5045f4ff4b82f1d88 (diff) | |
download | mpv-ceda76523a167b9d47cdc32b1738fe848c257323.tar.bz2 mpv-ceda76523a167b9d47cdc32b1738fe848c257323.tar.xz |
AFMT_AC3 autodetect/fallback to S16
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5791 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_oss.c')
-rw-r--r-- | libao2/ao_oss.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libao2/ao_oss.c b/libao2/ao_oss.c index 1ac3b79a5c..17e6fc4fd5 100644 --- a/libao2/ao_oss.c +++ b/libao2/ao_oss.c @@ -123,12 +123,18 @@ static int init(int rate,int channels,int format,int flags){ ao_data.samplerate=rate; ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate); } - + +ac3_retry: ao_data.format=format; - ioctl (audio_fd, SNDCTL_DSP_SETFMT, &ao_data.format); - if(format == AFMT_AC3 && ao_data.format != AFMT_AC3) { - printf("Can't set audio device %s to AC3 output\n", dsp); - return 0; + if( ioctl(audio_fd, SNDCTL_DSP_SETFMT, &ao_data.format)<0 || + ao_data.format != format) if(format == AFMT_AC3){ + printf("Can't set audio device %s to AC3 output, trying S16...\n", dsp); +#ifdef WORDS_BIGENDIAN + format=AFMT_S16_BE; +#else + format=AFMT_S16_LE; +#endif + goto ac3_retry; } printf("audio_setup: sample format: %s (requested: %s)\n", audio_out_format_name(ao_data.format), audio_out_format_name(format)); |