summaryrefslogtreecommitdiffstats
path: root/libaf
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2011-03-31 23:44:14 +0300
committerUoti Urpala <uau@mplayer2.org>2011-03-31 23:51:19 +0300
commitb8e1456c25de18b8ecb8922d870bfe9161900d2a (patch)
tree551bb91156adc6c866c49938f5301b9b43639cad /libaf
parenta8b93d4c81d09d13e37b5a87a3dfa958078cc5f0 (diff)
downloadmpv-b8e1456c25de18b8ecb8922d870bfe9161900d2a.tar.bz2
mpv-b8e1456c25de18b8ecb8922d870bfe9161900d2a.tar.xz
af_lavcac3enc: fix channel reordering
Reordering to libavcodec channel order was broken with libavcodec versions using float input to the ac3 encoder because the reordering code still assumed int16 sample size. Fix.
Diffstat (limited to 'libaf')
-rw-r--r--libaf/af_lavcac3enc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libaf/af_lavcac3enc.c b/libaf/af_lavcac3enc.c
index 819f3f7382..1042f3691e 100644
--- a/libaf/af_lavcac3enc.c
+++ b/libaf/af_lavcac3enc.c
@@ -180,6 +180,7 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
char *buf, *src, *dest;
int max_output_len;
int frame_num = (data->len + s->pending_len) / s->expect_len;
+ int samplesize = af_fmt2bits(s->in_sampleformat) / 8;
if (s->add_iec61937_header)
max_output_len = AC3_FRAME_SIZE * 2 * 2 * frame_num;
@@ -230,7 +231,7 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT,
AF_CHANNEL_LAYOUT_LAVC_DEFAULT,
c->nch,
- s->expect_len / 2, 2);
+ s->expect_len / samplesize, samplesize);
len = avcodec_encode_audio(s->lavc_actx, dest, destsize,
(void *)s->pending_data);
@@ -242,7 +243,7 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT,
AF_CHANNEL_LAYOUT_LAVC_DEFAULT,
c->nch,
- s->expect_len / 2, 2);
+ s->expect_len / samplesize, samplesize);
len = avcodec_encode_audio(s->lavc_actx,dest,destsize,(void *)src);
src += s->expect_len;
left -= s->expect_len;