summaryrefslogtreecommitdiff
path: root/libavcodec/ac3enc.c
diff options
context:
space:
mode:
authorJustin Ruggles <jruggle@earthlink.net>2005-05-05 14:10:52 +0000
committerMichael Niedermayer <michaelni@gmx.at>2005-05-05 14:10:52 +0000
commit132041f06fe30eff483769e19681bb2d5f92f26c (patch)
treedba3720b1e7a6f3e5f11e76ec40f2918b380e016 /libavcodec/ac3enc.c
parent725de25c4c1d0db8d3bd1abc27db0bbba274cb1d (diff)
While adding stereo rematrixing, I came across something that needs to
be fixed even without adding the feature. The output correctly uses 4 dummy values for the rematrixing flags in block-0, but the bit allocation routine does not take these bits into account. From what I can tell, there was a patch in 2003 that corrected the output to make it DVD and spec compatible, but it didn't correct the bit allocation. It's only 4 bits over the entire 6 blocks, so overflow errors would happen rarely or never, but it's still worth fixing. So here is a fix. patch by (Justin Ruggles {jruggle earthlink net) Originally committed as revision 4179 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3enc.c')
-rw-r--r--libavcodec/ac3enc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c
index b690e1c359..aae06e4545 100644
--- a/libavcodec/ac3enc.c
+++ b/libavcodec/ac3enc.c
@@ -703,8 +703,10 @@ static int compute_bit_allocation(AC3EncodeContext *s,
/* audio blocks */
for(i=0;i<NB_BLOCKS;i++) {
frame_bits += s->nb_channels * 2 + 2; /* blksw * c, dithflag * c, dynrnge, cplstre */
- if (s->acmod == 2)
+ if (s->acmod == 2) {
frame_bits++; /* rematstr */
+ if(i==0) frame_bits += 4;
+ }
frame_bits += 2 * s->nb_channels; /* chexpstr[2] * c */
if (s->lfe)
frame_bits++; /* lfeexpstr */