changeset 2644:6ff5dc0dbaf0 libavcodec

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)
author michael
date Thu, 05 May 2005 14:10:52 +0000
parents 8e42a0463f68
children 42528c1f0246
files ac3enc.c
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ac3enc.c	Thu May 05 13:40:28 2005 +0000
+++ b/ac3enc.c	Thu May 05 14:10:52 2005 +0000
@@ -703,8 +703,10 @@
     /* 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 */