[FFmpeg-devel] [PATCH] lavfi/af_aemphasis: remove unnecessary complex number usage
Paul B Mahol
onemda at gmail.com
Tue Dec 22 09:46:50 CET 2015
On 12/22/15, Ganesh Ajjanagadde <gajjanagadde at gmail.com> wrote:
> complex is not available on all platforms. Furthermore, it is trivial to
> rewrite complex number expressions to real arithmetic, and in fact
> sometimes advantageous for performance reasons: by wrapping as a complex,
> one forces a particular Cartesian representation that is not necessarily
> optimal for the purpose.
>
> Configure tests are also removed, and aemphasis is now available across
> all platforms.
>
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
> configure | 26 --------------------------
> libavfilter/af_aemphasis.c | 13 ++++++-------
> 2 files changed, 6 insertions(+), 33 deletions(-)
>
> diff --git a/configure b/configure
> index 0227540..46021c4 100755
> --- a/configure
> +++ b/configure
> @@ -1070,21 +1070,6 @@ int main(void){ $func(); }
> EOF
> }
>
> -check_complexfunc(){
> - log check_complexfunc "$@"
> - func=$1
> - narg=$2
> - shift 2
> - test $narg = 2 && args="f, g" || args="f * I"
> - disable $func
> - check_ld "cc" "$@" <<EOF && enable $func
> -#include <complex.h>
> -#include <math.h>
> -float foo(complex float f, complex float g) { return $func($args); }
> -int main(void){ return (int) foo; }
> -EOF
> -}
> -
> check_mathfunc(){
> log check_mathfunc "$@"
> func=$1
> @@ -1803,11 +1788,6 @@ INTRINSICS_LIST="
> intrinsics_neon
> "
>
> -COMPLEX_FUNCS="
> - cabs
> - cexp
> -"
> -
> MATH_FUNCS="
> atanf
> atan2f
> @@ -1944,7 +1924,6 @@ HAVE_LIST="
> $ARCH_FEATURES
> $ATOMICS_LIST
> $BUILTIN_LIST
> - $COMPLEX_FUNCS
> $HAVE_LIST_CMDLINE
> $HAVE_LIST_PUB
> $HEADERS_LIST
> @@ -2835,7 +2814,6 @@ unix_protocol_deps="sys_un_h"
> unix_protocol_select="network"
>
> # filters
> -aemphasis_filter_deps="cabs cexp"
> amovie_filter_deps="avcodec avformat"
> aresample_filter_deps="swresample"
> ass_filter_deps="libass"
> @@ -5379,10 +5357,6 @@ for func in $MATH_FUNCS; do
> eval check_mathfunc $func \${${func}_args:-1}
> done
>
> -for func in $COMPLEX_FUNCS; do
> - eval check_complexfunc $func \${${func}_args:-1}
> -done
> -
> # these are off by default, so fail if requested and not available
> enabled avfoundation_indev && { check_header_objcc
> AVFoundation/AVFoundation.h || disable avfoundation_indev; }
> enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h
> CGGetActiveDisplayList -framework CoreGraphics ||
> diff --git a/libavfilter/af_aemphasis.c b/libavfilter/af_aemphasis.c
> index 2966f77..a5b8e30 100644
> --- a/libavfilter/af_aemphasis.c
> +++ b/libavfilter/af_aemphasis.c
> @@ -18,8 +18,6 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
> USA
> */
>
> -#include <complex.h>
> -
> #include "libavutil/opt.h"
> #include "avfilter.h"
> #include "internal.h"
> @@ -189,14 +187,15 @@ static inline void set_lp_rbj(BiquadD2 *bq, double fc,
> double q, double sr, doub
>
> static double freq_gain(BiquadCoeffs *c, double freq, double sr)
> {
> - double complex z, w;
> + double zr, zi;
>
> freq *= 2.0 * M_PI / sr;
> - w = 0 + I * freq;
> - z = 1.0 / cexp(w);
> + zr = cos(freq);
> + zi = -sin(freq);
>
> - return cabs(((double complex)c->a0 + c->a1 * z + c->a2 * z*z) /
> - ((double complex)1.0 + c->b1 * z + c->b2 * z*z));
> + /* |(a0 + a1*z + a2*z^2)/(1 + b1*z + b2*z^2)| */
> + return hypot(c->a0 + c->a1*zr + c->a2*(zr*zr-zi*zi), c->a1*zi +
> 2*c->a2*zr*zi) /
> + hypot(1 + c->b1*zr + c->b2*(zr*zr-zi*zi), c->b1*zi +
> 2*c->b2*zr*zi);
> }
>
> static int config_input(AVFilterLink *inlink)
> --
> 2.6.4
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
ok
More information about the ffmpeg-devel
mailing list