mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-02-08 19:00:07 +00:00
This uses the trigonometric double and triple angle formulae to avoid repeated (expensive) evaluation of libc's cos(). Sample benchmark (x86-64, Haswell, GNU/Linux) test: fate-swr-resample-dblp-44100-2626 old: 1104466600 decicycles in build_filter(loop 1000), 256 runs, 0 skips 1096765286 decicycles in build_filter(loop 1000), 512 runs, 0 skips 1070479590 decicycles in build_filter(loop 1000), 1024 runs, 0 skips new: 588861423 decicycles in build_filter(loop 1000), 256 runs, 0 skips 591262754 decicycles in build_filter(loop 1000), 512 runs, 0 skips 577355145 decicycles in build_filter(loop 1000), 1024 runs, 0 skips This results in small differences with the old expression: difference (worst case on [0, 2*M_PI]), argmax 0.008: max diff (relative): 0.000000000000157289807188 blackman_old(0.008): 0.000363951585488813192382 blackman_new(0.008): 0.000363951585488755946507 These are judged to be insignificant for the performance gain. PSNR to reference file is unchanged up to second decimal point for instance. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com> |
||
|---|---|---|
| .. | ||
| aarch64 | ||
| arm | ||
| x86 | ||
| audioconvert.c | ||
| audioconvert.h | ||
| dither.c | ||
| dither_template.c | ||
| libswresample.v | ||
| log2_tab.c | ||
| Makefile | ||
| noise_shaping_data.c | ||
| options.c | ||
| rematrix.c | ||
| rematrix_template.c | ||
| resample.c | ||
| resample.h | ||
| resample_dsp.c | ||
| resample_template.c | ||
| soxr_resample.c | ||
| swresample-test.c | ||
| swresample.c | ||
| swresample.h | ||
| swresample_frame.c | ||
| swresample_internal.h | ||
| swresampleres.rc | ||
| version.h | ||