diff options
author | Justin Ruggles <jruggle@earthlink.net> | 2005-05-05 14:10:52 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2005-05-05 14:10:52 +0000 |
commit | 132041f06fe30eff483769e19681bb2d5f92f26c (patch) | |
tree | dba3720b1e7a6f3e5f11e76ec40f2918b380e016 /libavcodec | |
parent | 725de25c4c1d0db8d3bd1abc27db0bbba274cb1d (diff) | |
download | ffmpeg-132041f06fe30eff483769e19681bb2d5f92f26c.tar.gz |
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')
-rw-r--r-- | libavcodec/ac3enc.c | 4 |
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 */ |