3 #ifndef VISR_LIBRBBL_CROSSFADING_CONVOLVER_UNIFORM_HPP_INCLUDED 4 #define VISR_LIBRBBL_CROSSFADING_CONVOLVER_UNIFORM_HPP_INCLUDED 14 #include <initializer_list> 30 template<
typename SampleType >
53 std::size_t numberOfOutputs,
54 std::size_t blockLength,
55 std::size_t maxFilterLength,
56 std::size_t maxRoutingPoints,
57 std::size_t maxFilterEntries,
58 std::size_t transitionSamples,
61 std::size_t alignment = 0,
62 char const * fftImplementation =
"default" );
69 std::size_t
numberOfInputs()
const {
return mCoreConvolver.numberOfInputs(); }
73 std::size_t
blockLength()
const {
return mCoreConvolver.blockLength(); }
79 std::size_t
alignment()
const {
return mCoreConvolver.alignment(); }
91 void process(
SampleType const *
const input, std::size_t inputStride,
92 SampleType *
const output, std::size_t outputStride,
93 std::size_t alignment = 0 );
102 void clearRoutingTable( );
125 void setRoutingEntry( std::size_t inputIdx, std::size_t outputIdx, std::size_t filterIdx,
SampleType gain );
130 bool removeRoutingEntry( std::size_t inputIdx, std::size_t outputIdx );
153 void clearFilters( );
169 void setImpulseResponse(
SampleType const * ir, std::size_t filterLength, std::size_t filterIdx, std::size_t alignment = 0 );
176 void setTransformedFilter(
FrequencyDomainType const * fdFilter, std::size_t filterIdx, std::size_t alignment );
181 void processOutputs(
SampleType *
const output, std::size_t outputChannelStride,
182 std::size_t alignment );
188 explicit RoutingEntry( std::size_t in, std::size_t out, std::size_t filter,
SampleType gain = 1.0f )
189 : inputIdx( in ), outputIdx( out ), filterIdx( filter ), gainLinear( gain )
192 std::size_t inputIdx;
193 std::size_t outputIdx;
194 std::size_t filterIdx;
202 struct CompareRoutings
204 bool operator()( RoutingEntry
const & lhs, RoutingEntry
const & rhs )
const 206 if( lhs.outputIdx == rhs.outputIdx )
208 return lhs.inputIdx < rhs.inputIdx;
212 return lhs.outputIdx < rhs.outputIdx;
217 using RoutingTable = std::multiset<RoutingEntry, CompareRoutings>;
219 RoutingTable mRoutingTable;
221 std::size_t
const mMaxNumberOfRoutingPoints;
238 std::size_t
const mMaxNumFilters;
240 std::size_t
const mNumRampBlocks;
242 std::vector<std::size_t> mCurrentFilterOutput;
244 std::vector<std::size_t> mCurrentRampBlock;
252 #endif // #ifndef VISR_LIBRBBL_CROSSFADING_CONVOLVER_UNIFORM_HPP_INCLUDED
Definition: filter_routing.hpp:22
Definition: options.cpp:10
float SampleType
Definition: constants.hpp:14
Definition: filter_routing.hpp:81