ac3dec_fixed: always use the USE_FIXED=1 variant of the AC3DecodeContext
authorAndreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Fri, 13 Mar 2015 21:28:42 +0000 (22:28 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Mar 2015 00:52:52 +0000 (01:52 +0100)
commit6d14bea8b56866b45453ba2c5c5202852fad39eb
treed0c48682078286c7236d6e7705288fc067e91ef4
parent749cd89ca94d3540601f4837052cbb961eb99e06
ac3dec_fixed: always use the USE_FIXED=1 variant of the AC3DecodeContext

The AC3DecodeContext has a float (USE_FIXED=0) and an integer
(USE_FIXED=1) variant, both of which can be present in the same binary.
This is not only very confusing, but it also breaks horribly, when one
variant is used by code expecting the other.

This currently happens, because eac3dec.c is only compiled for the float
variant, but also used from ac3dec_fixed.c, which uses the integer
variant.

The result is memory corruption, leading to crashes.

So compile eac3dec.c once for each variant and adapt it, so that it
works with the integer variant.

A loss of precission and scaling bug has been fixed by the committer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7b05b5093ea67a3397b0c37cf398bab471e1ce2b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/Makefile
libavcodec/ac3dec.h
libavcodec/ac3dec_fixed.c
libavcodec/ac3dec_float.c
libavcodec/eac3dec.c