lswr: Improve default resampler's default parameters

After making some blind tests on a small collection of music
samples for home usage. It turned out that the default cutoff
was too low.

The impact of filter_size was not clearly distinguishable (the
results were on the edge) with the music samples but turned out
to be clearly audible in some synthetic samples.

Thanks to Daniel for helping out with the listening tests.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
This commit is contained in:
Alexander Strasser 2012-12-25 23:14:09 +01:00
parent a08194b4c5
commit ac25b31ede
7 changed files with 21 additions and 21 deletions

View File

@ -121,7 +121,7 @@ case.
@end table
@item filter_size
For swr only, set resampling filter size, default value is 16.
For swr only, set resampling filter size, default value is 32.
@item phase_shift
For swr only, set resampling phase shift, default value is 10, must be included
@ -132,7 +132,7 @@ Use Linear Interpolation if set to 1, default value is 0.
@item cutoff
Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
value between 0 and 1. Default value is 0.8 with swr, and 0.91 with soxr
value between 0 and 1. Default value is 0.97 with swr, and 0.91 with soxr
(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
@item precision

View File

@ -198,7 +198,7 @@ static int build_filter(ResampleContext *c, void *filter, double factor, int tap
static ResampleContext *resample_init(ResampleContext *c, int out_rate, int in_rate, int filter_size, int phase_shift, int linear,
double cutoff0, enum AVSampleFormat format, enum SwrFilterType filter_type, int kaiser_beta,
double precision, int cheby){
double cutoff = cutoff0? cutoff0 : 0.8;
double cutoff = cutoff0? cutoff0 : 0.97;
double factor= FFMIN(out_rate * cutoff / in_rate, 1.0);
int phase_count= 1<<phase_shift;

View File

@ -80,7 +80,7 @@ static const AVOption options[]={
{"triangular" , "select triangular dither" , 0 , AV_OPT_TYPE_CONST, {.i64=SWR_DITHER_TRIANGULAR }, INT_MIN, INT_MAX , PARAM, "dither_method"},
{"triangular_hp" , "select triangular dither with high pass" , 0 , AV_OPT_TYPE_CONST, {.i64=SWR_DITHER_TRIANGULAR_HIGHPASS }, INT_MIN, INT_MAX, PARAM, "dither_method"},
{"filter_size" , "set swr resampling filter size", OFFSET(filter_size) , AV_OPT_TYPE_INT , {.i64=16 }, 0 , INT_MAX , PARAM },
{"filter_size" , "set swr resampling filter size", OFFSET(filter_size) , AV_OPT_TYPE_INT , {.i64=32 }, 0 , INT_MAX , PARAM },
{"phase_shift" , "set swr resampling phase shift", OFFSET(phase_shift) , AV_OPT_TYPE_INT , {.i64=10 }, 0 , 30 , PARAM },
{"linear_interp" , "enable linear interpolation" , OFFSET(linear_interp) , AV_OPT_TYPE_INT , {.i64=0 }, 0 , 1 , PARAM },
{"cutoff" , "set cutoff frequency ratio" , OFFSET(cutoff) , AV_OPT_TYPE_DOUBLE,{.dbl=0. }, 0 , 1 , PARAM },

View File

@ -1,4 +1,4 @@
c8ff13cf7ebece23af76502f5785202e *tests/data/fate/acodec-roqaudio.roq
75859976d7098588aeaebbc5551484a9 *tests/data/fate/acodec-roqaudio.roq
265992 tests/data/fate/acodec-roqaudio.roq
709fd60aea880c73b375094ab5307c77 *tests/data/fate/acodec-roqaudio.out.wav
stddev: 4610.71 PSNR: 23.05 MAXDIFF:43883 bytes: 1058400/ 1058400
be6d954adaf984f2dc65a3ff50b55f26 *tests/data/fate/acodec-roqaudio.out.wav
stddev: 4481.70 PSNR: 23.30 MAXDIFF:46250 bytes: 1058400/ 1058400

View File

@ -1,9 +1,9 @@
6f9cfff48f536fa727696f2f9fb3ac08 *./tests/data/lavf/lavf.dv
11be3e5caa2892236b3475c3f7807b76 *./tests/data/lavf/lavf.dv
3600000 ./tests/data/lavf/lavf.dv
./tests/data/lavf/lavf.dv CRC=0x5ce4e5e4
2e8989478f05f6d4eaf1921fdfac4799 *./tests/data/lavf/lavf.dv
./tests/data/lavf/lavf.dv CRC=0x25bdd732
7c789e3559b5102de9459211ae4acf06 *./tests/data/lavf/lavf.dv
3600000 ./tests/data/lavf/lavf.dv
./tests/data/lavf/lavf.dv CRC=0x747caf33
./tests/data/lavf/lavf.dv CRC=0x3f43a4f5
87d3b20f656235671383a7eaa2f66330 *./tests/data/lavf/lavf.dv
3600000 ./tests/data/lavf/lavf.dv
./tests/data/lavf/lavf.dv CRC=0x0e868a82

View File

@ -1,9 +1,9 @@
72e150dc3430a6a78656790658eb9a09 *./tests/data/lavf/lavf.gxf
c8b3a8e3ba0185ce39122ac150c12bc3 *./tests/data/lavf/lavf.gxf
795876 ./tests/data/lavf/lavf.gxf
./tests/data/lavf/lavf.gxf CRC=0xaee412d1
cb6b1f522a9a8df145f55905c63a65b6 *./tests/data/lavf/lavf.gxf
./tests/data/lavf/lavf.gxf CRC=0x147ff044
4c6594c58da57af745eb511bdd65bca7 *./tests/data/lavf/lavf.gxf
816752 ./tests/data/lavf/lavf.gxf
./tests/data/lavf/lavf.gxf CRC=0xb73759d8
./tests/data/lavf/lavf.gxf CRC=0xfa7c375a
e4721383461d7a9feae41435567c9257 *./tests/data/lavf/lavf.gxf
795876 ./tests/data/lavf/lavf.gxf
./tests/data/lavf/lavf.gxf CRC=0xd9d58865

View File

@ -1,9 +1,9 @@
c53c9f7ee2091405fbe50374f9055679 *./tests/data/lavf/lavf.mxf
967f6ee9223c865328f4891465191108 *./tests/data/lavf/lavf.mxf
525369 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0x17ce1069
14d0ac1513840b670a785daf4331aca8 *./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
ec951485333c0b320d2ede8692c602ae *./tests/data/lavf/lavf.mxf
554553 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0x468cdbc4
5636cee18b0f34a5acb33a8efb9f80c6 *./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0xfbaac0b0
ce535b606423d117675213b16275206a *./tests/data/lavf/lavf.mxf
525369 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0x17ce1069
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1