diff options
author | Ganesh Ajjanagadde <gajjanagadde@gmail.com> | 2015-12-29 13:16:08 -0800 |
---|---|---|
committer | Ganesh Ajjanagadde <gajjanagadde@gmail.com> | 2016-01-01 12:12:10 -0800 |
commit | 9dba3f8f09834b68f4671de37ee67a95c09c4378 (patch) | |
tree | 687a7c47938a82cd87f4a7f31f3c1287dc99f103 | |
parent | 77eeaa2c3dec9d0e374ea5597d002527306261ec (diff) | |
download | ffmpeg-9dba3f8f09834b68f4671de37ee67a95c09c4378.tar.gz |
lavfi/af_sofalizer: remove exp2 and replace clz by ff_clz
ff_clz is faster, and uses an intrinsic (at the moment on GCC). exp2 is
a wasteful function for a simple integer exponentiation.
Untested.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-rw-r--r-- | libavfilter/af_sofalizer.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/libavfilter/af_sofalizer.c b/libavfilter/af_sofalizer.c index 6a24cbced8..0f1231f884 100644 --- a/libavfilter/af_sofalizer.c +++ b/libavfilter/af_sofalizer.c @@ -30,6 +30,7 @@ #include "libavcodec/avfft.h" #include "libavutil/float_dsp.h" +#include "libavutil/intmath.h" #include "libavutil/opt.h" #include "avfilter.h" #include "internal.h" @@ -952,18 +953,6 @@ static av_cold int init(AVFilterContext *ctx) return 0; } -static inline unsigned clz(unsigned x) -{ - unsigned i = sizeof(x) * 8; - - while (x) { - x >>= 1; - i--; - } - - return i; -} - static int config_input(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; @@ -996,8 +985,8 @@ static int config_input(AVFilterLink *inlink) } /* buffer length is longest IR plus max. delay -> next power of 2 (32 - count leading zeros gives required exponent) */ - s->buffer_length = exp2(32 - clz((uint32_t)n_max)); - s->n_fft = exp2(32 - clz((uint32_t)(n_max + inlink->sample_rate))); + s->buffer_length = 1 << (32 - ff_clz(n_max)); + s->n_fft = 1 << (32 - ff_clz(n_max + inlink->sample_rate)); if (s->type == FREQUENCY_DOMAIN) { av_fft_end(s->fft[0]); |