On 12/22/15, Ganesh Ajjanagadde <gajjanaga...@gmail.com> wrote: > On Tue, Dec 22, 2015 at 2:10 PM, Paul B Mahol <one...@gmail.com> wrote: >> On 12/22/15, Ganesh Ajjanagadde <gajjanaga...@gmail.com> wrote: >>> On Tue, Dec 22, 2015 at 12:46 AM, Paul B Mahol <one...@gmail.com> wrote: >>>> On 12/22/15, Ganesh Ajjanagadde <gajjanaga...@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 <gajjanaga...@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@ffmpeg.org >>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>>>> >>>> >>>> ok >>> >>> I assume by this you are ok with the configure change as well. >>> Personally, I think the effort needed for writing the configure hacks >>> is higher than using real arithmetic, and hence I removed it to help >>> ensure it is not added back again. >>> >>> This filter was added during the next version work, so does not need a >>> Changelog update. Thanks, will push later. >>> >> >> Please leave configure check alone, I'm writting some code that uses >> complex again. > > and how hard is it to use real numbers? It does not take > 5 min to > come up real number expressions... >
It's long expression. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel