[Ffmpeg-devel] Re: BUG: AC3 encode volume is low

Benjamin Larsson banan
Mon Apr 10 16:14:11 CEST 2006


Justin Ruggles wrote:

>Hello,
>[...]
>
>
>IMO, neither ac3's MDCT formula nor FFmpeg's implementation of it is
>dodgy.  You're right, though, that there was never any consensus on a
>resolution to the issue and no fix was ever committed.  I still haven't
>changed my opinion on the matter, although there is one thing that I am
>not 100% sure about...
>
>Why does the MDCT output to a 32-bit int instead of 16-bit?  Isn't it
>just a signed 15-bit fixed-point implementation of the formula in the
>spec?  I can't find where the output coefficients would need to be more
>than a 16-bit signed integer.
>
>>From what I can tell from the MDCT code, and from the fix15() function,
>the output coefficients should have a range of -32767 to 32767.  Thus,
>the abs(av_log2(mdct_coeff)) would have a range of 0 to 14.  Looking at
>the code that calculates the exponent based on the MDCT coefficient, (23
>- v) would have a range of 23 to 9.  In order to get the desired
>exponent range of 0 to 24, the value of exp_samples, which is generated
>during normalization, would have to have a minimum value of -9.
>
>The current code generates a minimum value for exp_samples of -8.  To
>me, changing the normalization code to generate a minimum value of -9
>seems to be the proper solution.
>
>I don't think I ever submitted this in its own patch way back when, so
>I'll go ahead and do it now.  I hope I'm doing the regression test
>checksums correctly...I've never really used regression tests before.
>
>-Justin
>  
>
Patch applied and regressions test passed on amd64.

MvH
Benjamin Larsson

-- 
"incorrect information" is an oxymoron. Information is, by definition, factual, correct.





More information about the ffmpeg-devel mailing list