Kfr Versions Save

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)

4.2.1

3 years ago

Various fixes and performance improvements.

4.2.0

4 years ago

Added

  • ENABLE_DFT_MULTIARCH cmake option can be used to build kfr_dft with multiple architectures support (x86/x86_64 only)
  • config.h is generated during install step with all #defines needed for correct usage of installed libraries

Changed

  • CMAKE_INSTALL_PREFIX is reset to empty on Win32 (can be overriden in cmake command line)
  • C API binary is now installed using install command (make install, ninja install or cmake --build . --target install)

4.1.0

4 years ago

Added

Changed

  • cdirect_t{} is now allowed in real dft plan methods for compatibility
  • complex support for convolve_filter (thanks to https://github.com/slarew)

Fixed

4.0.0

4 years ago
  • IIR filter design
    • Butterworth
    • Chebyshev type I and II
    • Bessel
    • Lowpass, highpass, bandpass and bandstop filters
    • Conversion of arbitrary filter from Z,P,K to SOS format (suitable for biquad function and filter)
  • Discrete Cosine Transform type II (and its inverse, also called DCT type III)
  • cmake uninstall target (thank to @acxz)
  • C API: DFT, real DFT, DCT, FIR and IIR filters and convolution, memory allocation
    • Built for SSE2, SSE4.1, AVX, AVX2, AVX512, x86 and x86_64, architecture is selected at runtime
    • Can be used with any compiler and any language with ability to call C functions
    • Prebuilt windows binaries
  • C++17
    • Inline variables
    • Fold expressions
    • Structured binding
  • New vector based types: color, rectangle, point, size, border, geometric vector, 2D matrix
  • Color space conversion (sRGB, XYZ, Lab, LCH)
  • MP3 file reading (using third party dr_lib library, see source code for details)
  • Various optimizations and fixes (thank to @bmanga, @ncorgan, @rotkreis, @mujjingun for fixes and bug reports)

Release notes

  • MSVC support is limited to MSVC2017 due to ICE in MSVC2019. Once fixed, support will be added
  • DFT is limited to Clang due to ICE in MSVC and broken AVX optimization in GCC 8 and 9. Once fixed, support will be added

See full change log in CHANGELOG.md

4.0.0-rc

4 years ago
  • IIR filter design
    • Butterworth
    • Chebyshev type I and II
    • Bessel
    • Lowpass, highpass, bandpass and bandstop filters
    • Conversion of arbitrary filter from Z,P,K to SOS format (suitable for biquad function and filter)
  • Discrete Cosine Transform type II (and its inverse, also called DCT type III)
  • cmake uninstall target (thank to @acxz)
  • C API: DFT, real DFT, DCT, FIR and IIR filters and convolution, memory allocation
    • Built for SSE2, SSE4.1, AVX, AVX2, AVX512, x86 and x86_64, architecture is selected at runtime
    • Can be used with any compiler and any language with ability to call C functions
    • Prebuilt windows binaries
  • C++17
    • Inline variables
    • Fold expressions
    • Structured binding
  • New vector based types: color, rectangle, point, size, border, geometric vector, 2D matrix
  • Color space conversion (sRGB, XYZ, Lab, LCH)
  • MP3 file reading (using third party dr_lib library, see source code for details)
  • Various optimizations and fixes (thank to @bmanga, @ncorgan, @rotkreis, @mujjingun for fixes and bug reports)

Release notes

  • MSVC support is limited to MSVC2017 due to ICE in MSVC2019. Once fixed, support will be added
  • DFT is limited to Clang due to ICE in MSVC and broken AVX optimization in GCC 8 and 9. Once fixed, support will be added

3.0.9

5 years ago

Changes since KFR 3.0.8

Added

  • reduce supports different types and containers other than univector
  • Assignment operators for univector: +=, *= etc
  • concatenate function to concatenate two expressions sequentially
  • Audio file IO: read_channels/write_channels to read channels data directly without interleaving/deinterleaving
  • as_string: support for std::vector

Changed

  • expression_scalar: support for vec<T>

Fixed

  • CPU detection in cmake subdirectory
  • MSVC 2017 32-bit intrinsics

v3.0.8

5 years ago

Changes since KFR 2.x

  • Optimized non-power of two DFT implementation
  • DFT speeds have been improved by up to 15% on most modern cpus
  • MSVC 2017 support
  • GCC 7+ support
  • Full AVX-512 support
  • EBU R128
  • Ability to include KFR as a subdirectory in cmake project
  • Ability to link objects built for multiple architectures into one binary
  • Number of automatic tests has been increased
  • C API for DFT
  • WAV file reading/writing and FLAC file reading (based on included https://github.com/mackron/dr_libs)
  • GPL version changed from 3 to 2+
  • Support for resampling complex vectors
  • Various performance improvements
  • Portability and stability fixes

Tested OS/compiler

  • macOS High Sierra/Xcode 10.1
  • macOS High Sierra/Xcode 10
  • macOS High Sierra/Xcode 9.4.1
  • macOS High Sierra/Xcode 9.0.1
  • macOS High Sierra/Xcode 8.3.3
  • Windows/Visual Studio 2017
  • Windows/Clang 6.0.0
  • Windows/Clang 7.0.0
  • Windows/Clang 7.0.1
  • MinGW Windows/Clang 6.0.0
  • MinGW Windows/Clang 7.0.0
  • MinGW Windows/Clang 7.0.1
  • MinGW Windows/GCC 7.3.0
  • MinGW Windows/GCC 8.2.0
  • Ubuntu Linux 18.04/GCC 7.3.0
  • Ubuntu Linux 18.04/GCC 8.2.0
  • Ubuntu Linux 16.04/GCC 8.1.0
  • Ubuntu Linux 16.04/GCC 7.3.0
  • Ubuntu Linux 16.04/GCC 7.4.0
  • Ubuntu Linux 16.04/Clang 6.0.1
  • Ubuntu Linux 18.04/Clang 4.0
  • Android R19

Tested architectures

  • Generic (without SIMD)
  • x86
  • x86_64 (AMD64)
  • SSE
  • SSE2
  • SSE3
  • SSSE3
  • SSE4.1
  • SSE4.2
  • AVX
  • AVX2
  • FMA
  • AVX512
  • ARM NEON
  • ARM64 NEON

v3.0.7

5 years ago

Changes since KFR 2.x

  • Optimized non-power of two DFT implementation
  • DFT speeds have been improved by up to 15% on most modern cpus
  • MSVC 2017 support
  • GCC 7+ support
  • Full AVX-512 support
  • EBU R128
  • Ability to include KFR as a subdirectory in cmake project
  • Ability to link objects built for multiple architectures into one binary
  • Number of automatic tests has been increased
  • C API for DFT
  • WAV file reading/writing and FLAC file reading (based on included https://github.com/mackron/dr_libs)
  • GPL version changed from 3 to 2+
  • Support for resampling complex vectors
  • Various performance improvements
  • Portability and stability fixes

Tested OS/compiler

  • macOS High Sierra/Xcode 10.1
  • macOS High Sierra/Xcode 10
  • macOS High Sierra/Xcode 9.4.1
  • macOS High Sierra/Xcode 9.0.1
  • macOS High Sierra/Xcode 8.3.3
  • Windows/Visual Studio 2017
  • Windows/Clang 6.0.0
  • Windows/Clang 7.0.0
  • Windows/Clang 7.0.1
  • MinGW Windows/Clang 6.0.0
  • MinGW Windows/Clang 7.0.0
  • MinGW Windows/Clang 7.0.1
  • MinGW Windows/GCC 7.3.0
  • MinGW Windows/GCC 8.2.0
  • Ubuntu Linux 18.04/GCC 7.3.0
  • Ubuntu Linux 18.04/GCC 8.2.0
  • Ubuntu Linux 16.04/GCC 8.1.0
  • Ubuntu Linux 16.04/GCC 7.3.0
  • Ubuntu Linux 16.04/GCC 7.4.0
  • Ubuntu Linux 16.04/Clang 6.0.1
  • Ubuntu Linux 18.04/Clang 4.0
  • Android R19

Tested architectures

  • Generic (without SIMD)
  • x86
  • x86_64 (AMD64)
  • SSE
  • SSE2
  • SSE3
  • SSSE3
  • SSE4.1
  • SSE4.2
  • AVX
  • AVX2
  • FMA
  • AVX512
  • ARM NEON
  • ARM64 NEON

v3.0.5-rc

5 years ago
  • Optimized non-power of two DFT implementation
  • GCC 7+ support
  • MSVC 2017 support
  • Full AVX-512 support
  • EBU R128
  • Ability to include KFR as a subdirectory in cmake project
  • Ability to link objects built for multiple architectures into one binary
  • Number of automatic tests has been increased
  • C API for DFT
  • GPL version changed from 3 to 2+

v1.2.0

7 years ago

New features and notable changes:

  • Real-to-complex and complex-to-real FFT
  • FFT plan caching
  • Cross-correlation and auto-correlation
  • Initial support for GCC and other compilers
  • Compile times have been reduced by 10 times in Debug mode
  • New function to partition expression for parallel execution
  • Faster implementations for many functions
  • Various small improvements and fixes