[alsa-devel] [PATCH - alsa-plugins 2/2] a52 - set channel layout with recent libavcodec

Anssi Hannula anssi.hannula at iki.fi
Fri Nov 27 16:15:46 CET 2009


As of SVN r18631 (2009-04-20) A52 encoder of libavcodec outputs a
warning at run-time if channel layout is not specified.

Fix that by setting the channel layout in a52_prepare() when building
against libavcodec revision that supports this.

Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
---
 a52/pcm_a52.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c
index b95d7d4..ed491b3 100644
--- a/a52/pcm_a52.c
+++ b/a52/pcm_a52.c
@@ -436,6 +436,21 @@ static int a52_prepare(snd_pcm_ioplug_t *io)
 	rec->avctx->bit_rate = rec->bitrate * 1000;
 	rec->avctx->sample_rate = io->rate;
 	rec->avctx->channels = io->channels;
+#if LIBAVCODEC_VERSION_MAJOR > 52 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 3)
+	switch (io->channels) {
+	case 2:
+		rec->avctx->channel_layout = CH_LAYOUT_STEREO;
+		break;
+	case 4:
+		rec->avctx->channel_layout = CH_LAYOUT_QUAD;
+		break;
+	case 6:
+		rec->avctx->channel_layout = CH_LAYOUT_5POINT1;
+		break;
+	default:
+		break;
+	}
+#endif
 
 	if (avcodec_open(rec->avctx, rec->codec) < 0)
 		return -EINVAL;
-- 
1.6.4.4



More information about the Alsa-devel mailing list