Change #278721
| Category | ffmpeg |
| Changed by | Ayoub Nabil <237098474+ayoubnabil@users.noreply.github.com> |
| Changed at | Wed 19 Aug 2026 17:29:46 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | 2312ae4d10e10e315d12797b78155dbc0bc56cea |
Comments
avcodec/ac3dec: avoid coefficient truncation in float decoder The float decoder dequantized spectral coefficients into an int32_t buffer using mantissa >> exponent. This discarded the fractional part before conversion to float and substantially raised the dither noise floor for low-level coefficients. Store decoded coefficients as INTFLOAT and apply 2^-exponent directly in the floating-point path. Keep the fixed-point decoder unchanged, and perform coupling, rematrixing and final scaling in the native type. This also removes the now-unused fmtconvert dependency. Add a synthetic FATE test that measures the corrected dither level. Existing PCM references remain within one sample except fate-ac3-2.0, whose measured maximum difference is two samples. Fixes #23684.
Changed files
- configure
- libavcodec/ac3dec.c
- libavcodec/ac3dec.h
- tests/fate/ac3.mak