summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_alsa.c')
-rw-r--r--audio/out/ao_alsa.c32
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);