1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00
FFmpeg/libswresample
Ganesh Ajjanagadde c8780822ba swresample/resample: speed up build_filter for Blackman-Nuttall filter
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>
2015-11-05 21:52:40 -05:00
..
aarch64
arm
x86 x86/audio_convert: fix clobbering of xmm registers 2015-10-01 22:40:50 -03:00
audioconvert.c
audioconvert.h
dither_template.c
dither.c
libswresample.v
log2_tab.c
Makefile
noise_shaping_data.c
options.c swr: do not reject channel layouts that use channel 63 2015-10-28 19:25:49 +01:00
rematrix_template.c
rematrix.c swresample: slightly nicer debug output for auto matrix 2015-10-15 20:16:13 +02:00
resample_dsp.c
resample_template.c
resample.c swresample/resample: speed up build_filter for Blackman-Nuttall filter 2015-11-05 21:52:40 -05:00
resample.h
soxr_resample.c
swresample_frame.c
swresample_internal.h swresample/swresample_internal: add av_warn_unused_result 2015-10-15 22:27:23 -04:00
swresample-test.c all: add const-correctness to qsort comparators 2015-10-25 10:07:20 -04:00
swresample.c
swresample.h doc/resampler, swresample/options: use proper capitalization 2015-10-10 20:49:54 +02:00
swresampleres.rc
version.h