From 7ee074813b98b7b862d45e7125dd0ec0f6d89afc Mon Sep 17 00:00:00 2001 From: bugmen0t <@> Date: Tue, 3 Dec 2013 20:43:31 +0000 Subject: ao_oss: when falling back from unknown prefer larger format --- audio/out/ao_oss.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/audio/out/ao_oss.c b/audio/out/ao_oss.c index a03c8e0339..3f37b34b60 100644 --- a/audio/out/ao_oss.c +++ b/audio/out/ao_oss.c @@ -299,12 +299,28 @@ ac3_retry: if (oss_format == -1) { MP_VERBOSE(ao, "Unknown/not supported internal format: %s\n", af_fmt_to_str(ao->format)); +#if defined(AFMT_S32_LE) && defined(AFMT_S32_BE) +#if BYTE_ORDER == BIG_ENDIAN + oss_format = AFMT_S32_BE; +#else + oss_format = AFMT_S32_LE; +#endif + ao->format = AF_FORMAT_S32; +#elif defined(AFMT_S24_LE) && defined(AFMT_S24_BE) +#if BYTE_ORDER == BIG_ENDIAN + oss_format = AFMT_S24_BE; +#else + oss_format = AFMT_S24_LE; +#endif + ao->format = AF_FORMAT_S24; +#else #if BYTE_ORDER == BIG_ENDIAN oss_format = AFMT_S16_BE; #else oss_format = AFMT_S16_LE; #endif ao->format = AF_FORMAT_S16; +#endif } if (ioctl(p->audio_fd, SNDCTL_DSP_SETFMT, &oss_format) < 0 || oss_format != format2oss(ao->format)) -- cgit v1.2.3