diff options
Diffstat (limited to 'audio/out/ao_oss.c')
-rw-r--r-- | audio/out/ao_oss.c | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/audio/out/ao_oss.c b/audio/out/ao_oss.c index b78f244a7b..de71017432 100644 --- a/audio/out/ao_oss.c +++ b/audio/out/ao_oss.c @@ -40,6 +40,7 @@ #include "options/options.h" #include "common/msg.h" #include "osdep/timer.h" +#include "osdep/endian.h" #if HAVE_SYS_SOUNDCARD_H #include <sys/soundcard.h> @@ -89,39 +90,46 @@ static const struct mp_chmap oss_layouts[MP_NUM_CHANNELS + 1] = { MP_CHMAP8(FL, FR, BL, BR, FC, LFE, SL, SR), // 7.1 }; -static const int format_table[][2] = { - {AFMT_U8, AF_FORMAT_U8}, - {AFMT_S8, AF_FORMAT_S8}, - {AFMT_U16_LE, AF_FORMAT_U16_LE}, - {AFMT_U16_BE, AF_FORMAT_U16_BE}, - {AFMT_S16_LE, AF_FORMAT_S16_LE}, - {AFMT_S16_BE, AF_FORMAT_S16_BE}, -#ifdef AFMT_S24_PACKED - {AFMT_S24_PACKED, AF_FORMAT_S24_LE}, +#if !defined(AFMT_S16_NE) && defined(AFMT_S16_LE) && defined(AFMT_S16_BE) +#define AFMT_S16_NE MP_SELECT_LE_BE(AFMT_S16_LE, AFMT_S16_BE) #endif -#ifdef AFMT_U24_LE - {AFMT_U24_LE, AF_FORMAT_U24_LE}, + +#if !defined(AFMT_U16_NE) && defined(AFMT_U16_LE) && defined(AFMT_U16_BE) +#define AFMT_U16_NE MP_SELECT_LE_BE(AFMT_U16_LE, AFMT_U16_BE) #endif -#ifdef AFMT_U24_BE - {AFMT_U24_BE, AF_FORMAT_U24_BE}, + +#if !defined(AFMT_U24_NE) && defined(AFMT_U24_LE) && defined(AFMT_U24_BE) +#define AFMT_U24_NE MP_SELECT_LE_BE(AFMT_U24_LE, AFMT_U24_BE) #endif -#ifdef AFMT_S24_LE - {AFMT_S24_LE, AF_FORMAT_S24_LE}, + +#if !defined(AFMT_S24_NE) && defined(AFMT_S24_LE) && defined(AFMT_S24_BE) +#define AFMT_S24_NE MP_SELECT_LE_BE(AFMT_S24_LE, AFMT_S24_BE) #endif -#ifdef AFMT_S24_BE - {AFMT_S24_BE, AF_FORMAT_S24_BE}, + +#if !defined(AFMT_U32_NE) && defined(AFMT_U32_LE) && defined(AFMT_U32_BE) +#define AFMT_U32MP_SELECT_LE_BE(AFMT_U32_LE, AFMT_U32_BE) #endif -#ifdef AFMT_U32_LE - {AFMT_U32_LE, AF_FORMAT_U32_LE}, + +#if !defined(AFMT_S32_NE) && defined(AFMT_S32_LE) && defined(AFMT_S32_BE) +#define AFMT_S32MP_SELECT_LE_BE(AFMT_S32_LE, AFMT_S32_BE) +#endif + +static const int format_table[][2] = { + {AFMT_U8, AF_FORMAT_U8}, + {AFMT_S8, AF_FORMAT_S8}, + {AFMT_U16_NE, AF_FORMAT_U16}, + {AFMT_S16_NE, AF_FORMAT_S16}, +#ifdef AFMT_U24_NE + {AFMT_U24_NE, AF_FORMAT_U24}, #endif -#ifdef AFMT_U32_BE - {AFMT_U32_BE, AF_FORMAT_U32_BE}, +#ifdef AFMT_S24_NE + {AFMT_S24_NE, AF_FORMAT_S24}, #endif -#ifdef AFMT_S32_LE - {AFMT_S32_LE, AF_FORMAT_S32_LE}, +#ifdef AFMT_U32_NE + {AFMT_U32_NE, AF_FORMAT_U32}, #endif -#ifdef AFMT_S32_BE - {AFMT_S32_BE, AF_FORMAT_S32_BE}, +#ifdef AFMT_S32_NE + {AFMT_S32_NE, AF_FORMAT_S32}, #endif #ifdef AFMT_FLOAT {AFMT_FLOAT, AF_FORMAT_FLOAT}, |