Removed structured bindings from the filters
This commit is contained in:
parent
3ba28f2d52
commit
22557af4bd
1 changed files with 30 additions and 14 deletions
|
|
@ -53,42 +53,58 @@ public:
|
||||||
|
|
||||||
int processLowpass(absl::Span<const Type> input, absl::Span<Type> lowpass)
|
int processLowpass(absl::Span<const Type> input, absl::Span<Type> lowpass)
|
||||||
{
|
{
|
||||||
for (auto [in, out] = std::pair(input.begin(), lowpass.begin());
|
auto in = input.begin();
|
||||||
in < input.end() && out < lowpass.end(); in++, out++) {
|
auto out = lowpass.begin();
|
||||||
|
auto size = std::min(input.size(), lowpass.size());
|
||||||
|
auto sentinel = in.begin() + size;
|
||||||
|
while (in < sentinel) {
|
||||||
oneLowpass(in, out);
|
oneLowpass(in, out);
|
||||||
|
in++;
|
||||||
|
out++;
|
||||||
}
|
}
|
||||||
return std::min(input.size(), lowpass.size());
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
int processHighpass(absl::Span<const Type> input, absl::Span<Type> highpass)
|
int processHighpass(absl::Span<const Type> input, absl::Span<Type> highpass)
|
||||||
{
|
{
|
||||||
for (auto [in, out] = std::pair(input.begin(), highpass.begin());
|
auto in = input.begin();
|
||||||
in < input.end() && out < highpass.end(); in++, out++) {
|
auto out = highpass.begin();
|
||||||
|
auto size = std::min(input.size(), highpass.size());
|
||||||
|
auto sentinel = in.begin() + size;
|
||||||
|
while (in < sentinel) {
|
||||||
oneHighpass(in, out);
|
oneHighpass(in, out);
|
||||||
|
in++;
|
||||||
|
out++;
|
||||||
}
|
}
|
||||||
return std::min(input.size(), highpass.size());
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
int processLowpassVariableGain(absl::Span<const Type> input, absl::Span<Type> lowpass, absl::Span<const Type> gain)
|
int processLowpassVariableGain(absl::Span<const Type> input, absl::Span<Type> lowpass, absl::Span<const Type> gain)
|
||||||
{
|
{
|
||||||
for (auto [in, out, g] = std::tuple(input.begin(), lowpass.begin(), gain.begin());
|
auto in = input.begin();
|
||||||
in < input.end() && out < lowpass.end() && g < gain.end(); in++, out++, g++) {
|
auto out = lowpass.begin();
|
||||||
|
auto g = gain.begin();
|
||||||
|
auto size = min(input.size(), lowpass.size(), gain.size());
|
||||||
|
auto sentinel = in.begin() + size;
|
||||||
|
while (in < sentinel) {
|
||||||
setGain(*g);
|
setGain(*g);
|
||||||
oneLowpass(in, out);
|
oneLowpass(in, out);
|
||||||
}
|
}
|
||||||
|
return size;
|
||||||
return std::min({ input.size(), lowpass.size(), gain.size() });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int processHighpassVariableGain(absl::Span<const Type> input, absl::Span<Type> highpass, absl::Span<const Type> gain)
|
int processHighpassVariableGain(absl::Span<const Type> input, absl::Span<Type> highpass, absl::Span<const Type> gain)
|
||||||
{
|
{
|
||||||
for (auto [in, out, g] = std::tuple(input.begin(), highpass.begin(), gain.begin());
|
auto in = input.begin();
|
||||||
in < input.end() && out < highpass.end() && g < gain.end(); in++, out++, g++) {
|
auto out = highpass.begin();
|
||||||
|
auto g = gain.begin();
|
||||||
|
auto size = min(input.size(), highpass.size(), gain.size());
|
||||||
|
auto sentinel = in.begin() + size;
|
||||||
|
while (in < sentinel) {
|
||||||
setGain(*g);
|
setGain(*g);
|
||||||
oneHighpass(in, out);
|
oneHighpass(in, out);
|
||||||
}
|
}
|
||||||
|
return size;
|
||||||
return std::min({ input.size(), highpass.size(), gain.size() });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset() { state = 0.0; }
|
void reset() { state = 0.0; }
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue