summaryrefslogtreecommitdiff
path: root/libavdevice/alsa-audio-common.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2011-04-05 10:53:50 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2011-04-05 11:03:19 +0200
commit4d1d6f7a3c0a8c9235a5b26c4c5347d23b9ae091 (patch)
tree99d158d867f9f6386f8663b601a8693166c242a9 /libavdevice/alsa-audio-common.c
parentefec2d7b35db96014ad33e43383b93d42acd8829 (diff)
Support s32 output via alsa audio device.
Diffstat (limited to 'libavdevice/alsa-audio-common.c')
-rw-r--r--libavdevice/alsa-audio-common.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavdevice/alsa-audio-common.c b/libavdevice/alsa-audio-common.c
index ce1d75043a..bf22702792 100644
--- a/libavdevice/alsa-audio-common.c
+++ b/libavdevice/alsa-audio-common.c
@@ -36,6 +36,8 @@
static av_cold snd_pcm_format_t codec_id_to_pcm_format(int codec_id)
{
switch(codec_id) {
+ case CODEC_ID_PCM_S32LE: return SND_PCM_FORMAT_S32_LE;
+ case CODEC_ID_PCM_S32BE: return SND_PCM_FORMAT_S32_BE;
case CODEC_ID_PCM_S16LE: return SND_PCM_FORMAT_S16_LE;
case CODEC_ID_PCM_S16BE: return SND_PCM_FORMAT_S16_BE;
case CODEC_ID_PCM_S8: return SND_PCM_FORMAT_S8;
@@ -83,6 +85,8 @@ static void alsa_reorder_ ## NAME ## _out_71(const void *in_v, void *out_v, int
REORDER_OUT_51(s16, int16_t)
REORDER_OUT_71(s16, int16_t)
+REORDER_OUT_51(s32, int32_t)
+REORDER_OUT_71(s32, int32_t)
#define REORDER_DUMMY ((void *)1)
@@ -98,6 +102,12 @@ static av_cold ff_reorder_func find_reorder_func(int codec_id,
layout == AV_CH_LAYOUT_7POINT1 ?
out ? alsa_reorder_s16_out_71 : NULL :
NULL :
+ codec_id == CODEC_ID_PCM_S32LE || codec_id == CODEC_ID_PCM_S32BE ?
+ layout == AV_CH_LAYOUT_5POINT1_BACK || layout == AV_CH_LAYOUT_5POINT1 ?
+ out ? alsa_reorder_s32_out_51 : NULL :
+ layout == AV_CH_LAYOUT_7POINT1 ?
+ out ? alsa_reorder_s32_out_71 : NULL :
+ NULL :
NULL;
}