summaryrefslogtreecommitdiff
path: root/libavdevice
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2011-06-23 16:49:51 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2011-06-23 16:50:28 +0200
commitffc6c8a4305d25db8a5af72389a2453b17f43646 (patch)
tree8a8605700b06a583a9fca9b21156206ecaabffe2 /libavdevice
parent4b87a088bf5acad2a11e9f9c1dcec8f29bab3ec9 (diff)
Support u8, s8, alaw and mulaw channel reordering in alsa.
Diffstat (limited to 'libavdevice')
-rw-r--r--libavdevice/alsa-audio-common.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libavdevice/alsa-audio-common.c b/libavdevice/alsa-audio-common.c
index 38466a06ce..668ca02201 100644
--- a/libavdevice/alsa-audio-common.c
+++ b/libavdevice/alsa-audio-common.c
@@ -115,6 +115,9 @@ static void alsa_reorder_ ## NAME ## _out_71(const void *in_v, void *out_v, int
} \
}
+REORDER_OUT_50(int8, int8_t)
+REORDER_OUT_51(int8, int8_t)
+REORDER_OUT_71(int8, int8_t)
REORDER_OUT_50(int16, int16_t)
REORDER_OUT_51(int16, int16_t)
REORDER_OUT_71(int16, int16_t)
@@ -132,6 +135,17 @@ static av_cold ff_reorder_func find_reorder_func(int codec_id,
int out)
{
return
+ codec_id == CODEC_ID_PCM_U8 || codec_id == CODEC_ID_PCM_S8 ||
+ codec_id == CODEC_ID_PCM_ALAW || codec_id == CODEC_ID_PCM_MULAW ?
+ layout == AV_CH_LAYOUT_QUAD || layout == AV_CH_LAYOUT_2_2 ?
+ REORDER_DUMMY :
+ layout == AV_CH_LAYOUT_5POINT0_BACK || layout == AV_CH_LAYOUT_5POINT0 ?
+ out ? alsa_reorder_int8_out_50 : NULL :
+ layout == AV_CH_LAYOUT_5POINT1_BACK || layout == AV_CH_LAYOUT_5POINT1 ?
+ out ? alsa_reorder_int8_out_51 : NULL :
+ layout == AV_CH_LAYOUT_7POINT1 ?
+ out ? alsa_reorder_int8_out_71 : NULL :
+ NULL :
codec_id == CODEC_ID_PCM_U16LE || codec_id == CODEC_ID_PCM_U16BE ||
codec_id == CODEC_ID_PCM_S16LE || codec_id == CODEC_ID_PCM_S16BE ?
layout == AV_CH_LAYOUT_QUAD || layout == AV_CH_LAYOUT_2_2 ?