diff --git a/audio/oss.c b/audio/oss.c index 272de6405e..d34a91351a 100644 --- a/audio/oss.c +++ b/audio/oss.c @@ -20,6 +20,7 @@ #endif #include "driver.h" +#include "general.h" #include #ifdef HAVE_OSS_BSD @@ -68,7 +69,8 @@ static void* __oss_init(const char* device, unsigned rate, unsigned latency) } int channels = 2; - int format = AFMT_S16_LE; + int format = is_little_endian() ? + AFMT_S16_LE : AFMT_S16_BE; if (ioctl(*fd, SNDCTL_DSP_CHANNELS, &channels) < 0) { diff --git a/audio/pulse.c b/audio/pulse.c index 526927bdd7..e1fdfb17ce 100644 --- a/audio/pulse.c +++ b/audio/pulse.c @@ -59,18 +59,6 @@ static void __pulse_free(void *data) } } -static inline uint8_t is_little_endian(void) -{ - union - { - uint16_t x; - uint8_t y[2]; - } u; - - u.x = 1; - return u.y[0]; -} - static void context_state_cb(pa_context *c, void *data) { pa_t *pa = data; diff --git a/general.h b/general.h index 923659edc2..9494a8ed92 100644 --- a/general.h +++ b/general.h @@ -305,6 +305,18 @@ static inline uint32_t next_pow2(uint32_t v) return v; } +static inline uint8_t is_little_endian(void) +{ + union + { + uint16_t x; + uint8_t y[2]; + } u; + + u.x = 1; + return u.y[0]; +} + #endif diff --git a/movie.c b/movie.c index 8a43ff3bff..b587704a34 100644 --- a/movie.c +++ b/movie.c @@ -107,18 +107,6 @@ struct bsv_movie #define CRC_INDEX 2 #define STATE_SIZE_INDEX 3 -static inline uint8_t is_little_endian(void) -{ - union - { - uint16_t u16; - uint8_t u8[2]; - } u; - - u.u16 = 1; - return u.u8[0]; -} - // Convert to big-endian if needed static inline uint32_t swap_if_big32(uint32_t val) {