• Muhammad Faiz's avatar
    swresample: add exact_rational option · b8c6e5a6
    Muhammad Faiz authored
    give high quality resampling
    as good as with linear_interp=on
    as fast as without linear_interp=on
    tested visually with ffplay
    ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000, showcqt=gamma=5"
    ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:linear_interp=on, showcqt=gamma=5"
    ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:exact_rational=on, showcqt=gamma=5"
    
    slightly speed improvement
    for fair comparison with -cpuflags 0
    audio.wav is ~ 1 hour 44100 stereo 16bit wav file
    ffmpeg -i audio.wav -af aresample=osr=48000 -f null -
            old         new
    real    13.498s     13.121s
    user    13.364s     12.987s
    sys      0.131s      0.129s
    
    linear_interp=on
            old         new
    real    23.035s     23.050s
    user    22.907s     22.917s
    sys      0.119s     0.125s
    
    exact_rational=on
    real    12.418s
    user    12.298s
    sys      0.114s
    
    possibility to decrease memory usage if soft compensation is ignored
    Signed-off-by: 's avatarMuhammad Faiz <mfcc64@gmail.com>
    b8c6e5a6
Name
Last commit
Last update
..
aarch64 Loading commit data...
arm Loading commit data...
x86 Loading commit data...
Makefile Loading commit data...
audioconvert.c Loading commit data...
audioconvert.h Loading commit data...
dither.c Loading commit data...
dither_template.c Loading commit data...
libswresample.v Loading commit data...
log2_tab.c Loading commit data...
noise_shaping_data.c Loading commit data...
options.c Loading commit data...
rematrix.c Loading commit data...
rematrix_template.c Loading commit data...
resample.c Loading commit data...
resample.h Loading commit data...
resample_dsp.c Loading commit data...
resample_template.c Loading commit data...
soxr_resample.c Loading commit data...
swresample-test.c Loading commit data...
swresample.c Loading commit data...
swresample.h Loading commit data...
swresample_frame.c Loading commit data...
swresample_internal.h Loading commit data...
swresampleres.rc Loading commit data...
version.h Loading commit data...