123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- //$ nobt
- //$ nocpp
- /**
- * @file r8bconf.h
- *
- * @brief The "configuration" inclusion file you can modify.
- *
- * This is the "configuration" inclusion file for the "r8brain-free-src"
- * sample rate converter. You may redefine the macros here as you see fit.
- *
- * r8brain-free-src Copyright (c) 2013-2021 Aleksey Vaneev
- * See the "LICENSE" file for license.
- */
- #ifndef R8BCONF_INCLUDED
- #define R8BCONF_INCLUDED
- #if !defined( R8B_IPP )
- /**
- * Set the R8B_IPP macro definition to 1 to enable the use of Intel IPP's
- * fast Fourier transform functions. Also uncomment and correct the IPP
- * header inclusion macros.
- *
- * Do not forget to call the ippInit() function at the start of the
- * application, before using this library's functions.
- */
- #define R8B_IPP 0
- // #include <ippcore.h>
- // #include <ipps.h>
- #endif // !defined( R8B_IPP )
- #if !defined( R8BASSERT )
- /**
- * Assertion macro used to check for certain run-time conditions. By
- * default no action is taken if assertion fails.
- *
- * @param e Expression to check.
- */
- #define R8BASSERT( e )
- #endif // !defined( R8BASSERT )
- #if !defined( R8BCONSOLE )
- /**
- * Console output macro, used to output various resampler status strings,
- * including filter design parameters, convolver parameters.
- *
- * @param e Expression to send to the console, usually consists of a
- * standard "printf" format string followed by several parameters
- * (__VA_ARGS__).
- */
- #define R8BCONSOLE( ... )
- #endif // !defined( R8BCONSOLE )
- #if !defined( R8B_BASECLASS )
- /**
- * Macro defines the name of the class from which all classes that are
- * designed to be created on heap are derived. The default
- * r8b::CStdClassAllocator class uses "stdlib" memory allocation
- * functions.
- *
- * The classes that are best placed on stack or as class members are not
- * derived from any class.
- */
- #define R8B_BASECLASS :: r8b :: CStdClassAllocator
- #endif // !defined( R8B_BASECLASS )
- #if !defined( R8B_MEMALLOCCLASS )
- /**
- * Macro defines the name of the class that implements raw memory
- * allocation functions, see the r8b::CStdMemAllocator class for details.
- */
- #define R8B_MEMALLOCCLASS :: r8b :: CStdMemAllocator
- #endif // !defined( R8B_MEMALLOCCLASS )
- #if !defined( R8B_FILTER_CACHE_MAX )
- /**
- * This macro specifies the number of filters kept in the cache at most.
- * The actual number can be higher if many different filters are in use at
- * the same time.
- */
- #define R8B_FILTER_CACHE_MAX 96
- #endif // !defined( R8B_FILTER_CACHE_MAX )
- #if !defined( R8B_FRACBANK_CACHE_MAX )
- /**
- * This macro specifies the number of whole-number stepping fractional
- * delay filter banks kept in the cache at most. The actual number can be
- * higher if many different filter banks are in use at the same time. As
- * filter banks are usually big objects, it is advisable to keep this
- * cache size small.
- */
- #define R8B_FRACBANK_CACHE_MAX 12
- #endif // !defined( R8B_FRACBANK_CACHE_MAX )
- #if !defined( R8B_FLTTEST )
- /**
- * This macro, when equal to 1, enables fractional delay filter bank
- * testing: in this mode the filter bank becomes a dynamic member of the
- * CDSPFracInterpolator object instead of being a global static object.
- */
- #define R8B_FLTTEST 0
- #endif // !defined( R8B_FLTTEST )
- #if !defined( R8B_FASTTIMING )
- /**
- * This macro, when equal to 1, enables a fast interpolation sample
- * timing technique. This technique improves interpolation performance
- * (by around 10%) at the expense of a minor sample timing drift which is
- * on the order of 1e-6 samples per 10 billion output samples. This
- * setting does not apply to whole-number stepping, if it is in use, as
- * this stepping provides zero timing error without performance impact.
- * Also does not apply to the cases when a whole-numbered (2X, 3X, etc.)
- * resampling is in the actual use.
- */
- #define R8B_FASTTIMING 0
- #endif // !defined( R8B_FASTTIMING )
- #if !defined( R8B_EXTFFT )
- /**
- * This macro, when equal to 1, extends length of low-pass filters' FFT
- * block by a factor of 2, by zero-padding it. This usually improves the
- * overall time performance of the resampler at the expense of a higher
- * overall latency (initial processing delay). If such delay is not an
- * issue, setting this macro to 1 is preferrable. This macro can only have
- * a value of 0 or 1.
- */
- #define R8B_EXTFFT 0
- #endif // !defined( R8B_EXTFFT )
- #if !defined( R8B_PFFFT )
- /**
- * When defined as 1, enables PFFFT routines which are fast, but which
- * are limited to 24-bit precision. May be a good choice for time-series
- * interpolation, when stop-band attenuation higher than 120 dB is not
- * required.
- */
- #define R8B_PFFFT 0
- #endif // !defined( R8B_PFFFT )
- #if R8B_PFFFT
- #define R8B_FLOATFFT 1
- #endif // R8B_PFFFT
- #if !defined( R8B_PFFFT_DOUBLE )
- /**
- * When defined as 1, enables PFFFT "double" routines which are fast, and
- * which provide the highest precision.
- */
- #define R8B_PFFFT_DOUBLE 0
- #endif // !defined( R8B_PFFFT_DOUBLE )
- #if !defined( R8B_FLOATFFT )
- /**
- * The R8B_FLOATFFT definition enables double-to-float buffer conversions
- * for FFT operations, for algorithms that work with "float" values. This
- * macro should not be changed from the default "0" here.
- */
- #define R8B_FLOATFFT 0
- #endif // !defined( R8B_FLOATFFT )
- #endif // R8BCONF_INCLUDED
|