[FFmpeg-cvslog] swresample/soxr: fix invalid use of linear_interp

Muhammad Faiz git at videolan.org
Sat Nov 26 00:53:51 EET 2016


ffmpeg | branch: master | Muhammad Faiz <mfcc64 at gmail.com> | Fri Nov 25 16:39:34 2016 +0700| [da34e4e13238b755bb0e6ebf549015797d9b4467] | committer: Muhammad Faiz

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 <michael at niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=da34e4e13238b755bb0e6ebf549015797d9b4467
---

 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 b9c6735..8181c74 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



More information about the ffmpeg-cvslog mailing list