2019-12-05
- 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 III
- cmake uninstall target
- C API:
- DFT
- real DFT
- DCT
- FIR
- IIR
- Convolution
- Aligned memory allocation
- Built for SSE2, SSE4.1, AVX, AVX2, AVX512, x86 and x86_64, architecture is selected at runtime
- New vector based types:
- color
- rectangle
- point
- size
- border
- geometric vector
- 2D matrix
- Color space conversion:
- sRGB
- linear RGB
- XYZ
- Lab
- LCH
- HSV
- MP3 audio reading
aligned_reallocate
functionzip
andcolumn
functionsvec<vec<vec<T>>>
support- New example:
iir.cpp
biquad
that getsstd::vector
ofbiquad_param
scsqr
functionfactorial
functionisreal
functionmake_complex
function for expressions- New optimization technique for vector element shuffle
std::get<>
support forvec<>
- C++17 structured bindings support for
vec<>
- comparison operators for
cvals_t
- compile time
cminof
,cmaxof
functions vector_width_for
constant to get vector width for specific architecture- make_univector for containers and arrays
- univector: copy constructor optimization
- Custom
assertion_failed
- C++17 compiler is required. Some of C++17 library features may be missing, in this case KFR uses custom implementation
cast
function now works with both vectors and expressions (expression versions was previously calledconvert
)- Memory alignment can be up to 32768
- New implementation for
cometa::function
using shared pointer memory.hpp
allocation functions has been moved to cometacconj
has been moved to simd module (instead ofmath
)- dr_libs version updated
- All global constants are now
inline constexpr
- enums moved out of architecture namespace
special_constant::undefined
removed
- Fixed real DFT with raw poitners
- Bug with generators
- Fixed grid issues in dspplot
- Wrong index in
concatenate
csqrt
function- Fixed NaNs in
amp_to_dB
- GCC 9 support
- Workaround for Clang 8.0 FMA code generator bug
- Flat top window
- SSE4.2 detection (previously detected as SSE4.1)
- 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
2019-04-02
reduce
supports different types and containers other thanunivector
- 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 forstd::vector
expression_scalar
: support forvec<T>
- CPU detection in cmake subdirectory
- MSVC 2017 32-bit intrinsics
2019-03-15
- Ability to pass
random_bit_generator
by reference - Tests for iOS ARM and ARM64
kfr::complex
is placed inkfr
namespace
2019-03-13
- Detected CPU is now saved to CMake cache
- Linux/AArch64 tests have been added to CI
mask<>
is now a specialization ofvec<>
. This allows using manyvec
functions for masksshort_fir
performance has been increased by around 50%-60%
- Fixed the bug with infinitely loading in Intellisense
2019-03-07
- Android arm & arm64 tests have been added to CI
- Fixed Android support (thanks to https://github.com/Jman420)
- Fixed building cpu detection tool in CMake subdirectory (thanks to https://github.com/Jman420)
2019-02-21
- DFT speeds have been improved by up to 15% on most modern cpus
- Support for MSVC 2017
- Support for GCC 7.3
- Support for GCC 8.2
- Support for resampling complex vectors (Thanks to https://github.com/ermito)
- Tests for various math functions no longer depend on MPFR
- Testo now allocates much less memory during long tests (x3 less than previously)
- Building generators (Thanks to https://github.com/ermito)
2019-01-08
KFR_READCYCLECOUNTER
may be redefined to point to any function returning (pseudo-)random value- Ability to disable random number initialization functions
2018-12-27
- Partial compatibility for Visual Studio 2017
- Support for
KFR_USE_STD_ALLOCATION
univector
support forabstract_reader
/abstract_writer
- Paths in
CMakeLists.txt
2018-12-19
- More documentation
- dspplot:
freqticks
parameter - dspplot:
freq_lim
parameter - dspplot:
freq_dB_lim
parameter - dspplot:
phasearg
parameter - More tests for Sample Rate Converter
- Sample Rate Converter: now computes the transition width of the filter. This makes cutoff frequency more precise
- Sample Rate Converter: now uses Kaiser window with different β parameter for different quality. This leads to a better balance between transition width and sidelobes attenuation.
- Sample Rate Converter:
quality
parameter is now passed as runtime parameter rather than compile time parameter fir.cpp
example has been extended to include examples of applying FIR filters
amp_to_dB
function- 24-bit audio reading
2018-11-28
- WAV file reading/writing
- FLAC file reading
- Audio sample conversion
- Interleaving/deinterleaving
- sample_rate_converter example
- Sample Rate Converter:
process
() function
- Assignment to an empty vector resizes it
- New documentation
- KFR IO is now built separately (only needed for audio file support)
- Resampler bug: sequential calls to
resampler::operator()
may fail
- Optimized non-power of two DFT implementation
- Full AVX-512 support
- EBU R128
- Ability to include KFR as a subdirectory in cmake project
- Number of automatic tests has been increased
- C API for DFT
- Partial GCC 8.x support
- Ability to make sized linspace
fraction
type
- GPL version changed from 3 to 2+
- Refactoring of DFT code
- KFR DFT is now built separately
- FIR filter now supports different tap and sample types (thanks to @fbbdev)
- Various fixes for KFR functions
- FFT with size=128 on architectures with SSE only
- Small kfr::complex type fixes