diff options
Diffstat (limited to 'audio/out/ao_alsa.c')
-rw-r--r-- | audio/out/ao_alsa.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c index 60b8338f9d..c344f6f20e 100644 --- a/audio/out/ao_alsa.c +++ b/audio/out/ao_alsa.c @@ -38,6 +38,7 @@ #include "options/options.h" #include "options/m_option.h" #include "common/msg.h" +#include "osdep/endian.h" #define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API @@ -208,22 +209,17 @@ alsa_error: static const int mp_to_alsa_format[][2] = { {AF_FORMAT_S8, SND_PCM_FORMAT_S8}, {AF_FORMAT_U8, SND_PCM_FORMAT_U8}, - {AF_FORMAT_U16_LE, SND_PCM_FORMAT_U16_LE}, - {AF_FORMAT_U16_BE, SND_PCM_FORMAT_U16_BE}, - {AF_FORMAT_S16_LE, SND_PCM_FORMAT_S16_LE}, - {AF_FORMAT_S16_BE, SND_PCM_FORMAT_S16_BE}, - {AF_FORMAT_U32_LE, SND_PCM_FORMAT_U32_LE}, - {AF_FORMAT_U32_BE, SND_PCM_FORMAT_U32_BE}, - {AF_FORMAT_S32_LE, SND_PCM_FORMAT_S32_LE}, - {AF_FORMAT_S32_BE, SND_PCM_FORMAT_S32_BE}, - {AF_FORMAT_U24_LE, SND_PCM_FORMAT_U24_3LE}, - {AF_FORMAT_U24_BE, SND_PCM_FORMAT_U24_3BE}, - {AF_FORMAT_S24_LE, SND_PCM_FORMAT_S24_3LE}, - {AF_FORMAT_S24_BE, SND_PCM_FORMAT_S24_3BE}, - {AF_FORMAT_FLOAT_LE, SND_PCM_FORMAT_FLOAT_LE}, - {AF_FORMAT_FLOAT_BE, SND_PCM_FORMAT_FLOAT_BE}, - {AF_FORMAT_AC3, SND_PCM_FORMAT_S16_LE}, - {AF_FORMAT_IEC61937, SND_PCM_FORMAT_S16_LE}, + {AF_FORMAT_U16, SND_PCM_FORMAT_U16}, + {AF_FORMAT_S16, SND_PCM_FORMAT_S16}, + {AF_FORMAT_U32, SND_PCM_FORMAT_U32}, + {AF_FORMAT_S32, SND_PCM_FORMAT_S32}, + {AF_FORMAT_U24, + MP_SELECT_LE_BE(SND_PCM_FORMAT_U24_3LE, SND_PCM_FORMAT_U24_3BE)}, + {AF_FORMAT_S24, + MP_SELECT_LE_BE(SND_PCM_FORMAT_S24_3LE, SND_PCM_FORMAT_S24_3BE)}, + {AF_FORMAT_FLOAT, SND_PCM_FORMAT_FLOAT}, + {AF_FORMAT_AC3, SND_PCM_FORMAT_S16}, + {AF_FORMAT_IEC61937, SND_PCM_FORMAT_S16}, {AF_FORMAT_MPEG2, SND_PCM_FORMAT_MPEG}, {AF_FORMAT_UNKNOWN, SND_PCM_FORMAT_UNKNOWN}, }; @@ -417,13 +413,13 @@ static int init(struct ao *ao) if (err < 0) { MP_INFO(ao, "Format %s is not supported by hardware, trying default.\n", af_fmt_to_str(ao->format)); - p->alsa_fmt = SND_PCM_FORMAT_S16_LE; + p->alsa_fmt = SND_PCM_FORMAT_S16; if (AF_FORMAT_IS_AC3(ao->format)) ao->format = AF_FORMAT_AC3; else if (AF_FORMAT_IS_IEC61937(ao->format)) ao->format = AF_FORMAT_IEC61937; else - ao->format = AF_FORMAT_S16_LE; + ao->format = AF_FORMAT_S16; } err = snd_pcm_hw_params_set_format(p->alsa, alsa_hwparams, p->alsa_fmt); |