[Speex-dev] FFT Resampler

Thorvald Natvig thorvald at natvig.com
Wed May 28 15:40:50 PDT 2008

Attached is a snapshot of work-in-progress of a FFT based resampler. At 
the moment it works in floating point only, and only basic quality 
inspection has been done.

Some benchmarks comparing the filter-based resampler at Q3 with the FFT 
resampler with overlap = in_len / 2, using 20ms chunks of data. (-O3 
-ffast-math, FFTW3, gcc 4.3.0 on x86_64)

16=>48: 59us vs 19us
16=>44.1: 204us vs 34us
16=>8: 13us vs 7us
48=>8: 32us vs 16us

This is actually much faster than I expected.

With -O3, the overhead of copying, applying window etc is 20%. With all 
options, the overhead sinks to 10%.

I've done listening tests when converting wb_male.wav to 44.1, 48 and 
8khz, and there aren't any obvious artifacts. I also did a 16=>16 test, 
and the results are delayed by 10ms and within +/- 1 (basically, 
rounding errors from the FFT).

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: speex-block-snapshot.diff
Url: http://lists.xiph.org/pipermail/speex-dev/attachments/20080529/6819bbbe/attachment.txt 

More information about the Speex-dev mailing list