avfilter/af_afade: improve accuracy and speed of gain computation
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>
Wed, 25 Nov 2015 03:56:28 +0000 (22:56 -0500)
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>
Thu, 26 Nov 2015 14:20:46 +0000 (09:20 -0500)
commit9ee1feaa7c2822240b93d4640ec6e8d3e5b6139b
treef7b1d24c5afe3735a0c89f5f3df326a654e81a8d
parent68e79b27a5ed7cab55ab3c84c7b707d45fc81b61
avfilter/af_afade: improve accuracy and speed of gain computation

Gain computation for various curves was being done in a needlessly
inaccurate fashion. Of course these are all subjective curves, but when
a curve is advertised to the user, it should be matched as closely as
possible within the limitations of libm. In particular, the constants
kept here were pretty inaccurate for double precision.

Speed improvements are mainly due to the avoidance of pow, the most
notorious of the libm functions in terms of performance. To be fair, it
is the GNU libm that is among the worst, but it is not really GNU libm's fault
since others simply yield a higher error as measured in ULP.

"Magic" constants are also accordingly documented, since they take at
least a minute of thought for a casual reader.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
libavfilter/af_afade.c