[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