What's new in KFR 3.0
MSVC, GCC and AVX512 as well as DFT with non-power of 2 sizes.
MSVC and GCC supportNew in KFR 3
Now KFR supports building in Microsoft Visual Studio 2017 and GCC 7+.
As before, Xcode and Clang is fully supported.
AVX512 supportNew in KFR 3
Full support for the latest Intel vector extensions has been added to achieve maximum performance on the most recent cpus.
Fast Fourier Transform
All DFT sizes New in KFR 3
Now FFT supports any input size, not only powers of two. KFR automatically selects the best algorithm internally for maximum performance.
Better performance for modern cpus Improved in KFR 3
In KFR 3 FFT performance is improved by about 15% compared to the previous versions on most modern cpus.
DSP
Resampling Improved in KFR 3
Now the highest quality of KFR resampling implementation has been proved by the well known Sample Rate Convertor comparison
Complex number support for resampling algorithm and other improvements
Internal filter quality can now be set at runtime
Ability to get transition width, sidelobe attenuation and filter order selected for given quality
EBU R 128 loudness New in KFR 3
New class has been added to support loudness computation according to EBU R 128 standard
FIR/IIR filters, filter design, Window functions Improved in KFR 3
FIR filter performance has been increased by around 50%-60% for up to 33 taps
Audio files support Improved in KFR 3
KFR supports reading and writing of WAV files (including W64) and reading of FLAC files
Automatic Audio sample conversion New in KFR 3
KFR can convert samples during reading/writing to let you work with one internal type keeping full portability
Supported OS/Compilers/ArchitecturesImproved in KFR 3
- macOS
- Linux
- Windows (including MinGW)
- Android (target OS)
- iOS (target OS)
- Xcode
- Clang
- Visual Studio 2017
- GCC
- AVX, AVX2, AVX512
- SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2
- ARM NEON, ARM64 NEON
- Generic code as fallback
Other improvements and changes
Build system
- Ability to include KFR as a subdirectory in cmake project
- Ability to link objects built for multiple architectures into one binary
- Ability to detect host cpu at compile-time
License
Changed to GPL 2+ allowing use of KFR in both GPL 2 and GPL 3 licensed codebases