From da34e4e13238b755bb0e6ebf549015797d9b4467 Mon Sep 17 00:00:00 2001 From: Muhammad Faiz Date: Fri, 25 Nov 2016 16:39:34 +0700 Subject: [PATCH] swresample/soxr: fix invalid use of linear_interp give very bad quality for soxr resampler. linear_interp is intended for using linear interpolation between filter bank so quality will be better. i guess this is misunderstood as 'do not use filter bank, but directly interpolate linearly between samples'. Reviewed-by: Michael Niedermayer Signed-off-by: Muhammad Faiz --- libswresample/soxr_resample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libswresample/soxr_resample.c b/libswresample/soxr_resample.c index b9c6735028..8181c749b8 100644 --- a/libswresample/soxr_resample.c +++ b/libswresample/soxr_resample.c @@ -46,7 +46,7 @@ static struct ResampleContext *create(struct ResampleContext *c, int out_rate, i soxr_io_spec_t io_spec = soxr_io_spec(type, type); soxr_quality_spec_t q_spec = soxr_quality_spec((int)((precision-2)/4), (SOXR_HI_PREC_CLOCK|SOXR_ROLLOFF_NONE)*!!cheby); - q_spec.precision = linear? 0 : precision; + q_spec.precision = precision; #if !defined SOXR_VERSION /* Deprecated @ March 2013: */ q_spec.bw_pc = cutoff? FFMAX(FFMIN(cutoff,.995),.8)*100 : q_spec.bw_pc; #else