Don't bother with a passthru filter method

There's not really a case where it'll process less than 2 samples, and it was
wrong anyway.
This commit is contained in:
Chris Robinson
2019-06-24 21:18:25 -07:00
parent f5cb6ac20e
commit ab3c2ea777
2 changed files with 8 additions and 29 deletions
-14
View File
@@ -74,20 +74,6 @@ public:
void process(Real *dst, const Real *src, int numsamples);
void passthru(int numsamples) noexcept
{
if(LIKELY(numsamples >= 2))
{
z1 = 0.0f;
z2 = 0.0f;
}
else if(numsamples == 1)
{
z1 = z2;
z2 = 0.0f;
}
}
/* Rather hacky. It's just here to support "manual" processing. */
std::pair<Real,Real> getComponents() const noexcept
{ return {z1, z2}; }
+8 -15
View File
@@ -292,35 +292,28 @@ void SendSourceStoppedEvent(ALCcontext *context, ALuint id)
}
const ALfloat *DoFilters(BiquadFilter *lpfilter, BiquadFilter *hpfilter,
ALfloat *RESTRICT dst, const ALfloat *RESTRICT src, ALsizei numsamples, int type)
const ALfloat *DoFilters(BiquadFilter *lpfilter, BiquadFilter *hpfilter, ALfloat *dst,
const ALfloat *src, ALsizei numsamples, int type)
{
switch(type)
{
case AF_None:
lpfilter->passthru(numsamples);
hpfilter->passthru(numsamples);
lpfilter->clear();
hpfilter->clear();
break;
case AF_LowPass:
lpfilter->process(dst, src, numsamples);
hpfilter->passthru(numsamples);
hpfilter->clear();
return dst;
case AF_HighPass:
lpfilter->passthru(numsamples);
lpfilter->clear();
hpfilter->process(dst, src, numsamples);
return dst;
case AF_BandPass:
for(ALsizei i{0};i < numsamples;)
{
ALfloat temp[256];
ALsizei todo = mini(256, numsamples-i);
lpfilter->process(temp, src+i, todo);
hpfilter->process(dst+i, temp, todo);
i += todo;
}
lpfilter->process(dst, src, numsamples);
hpfilter->process(dst, dst, numsamples);
return dst;
}
return src;