protected unsafe override void ProcessFilter(Signal sourceData, Signal destinationData)
{
SampleFormat format = sourceData.SampleFormat;
int channels = sourceData.Channels;
int length = sourceData.Length;
if (format == SampleFormat.Format32BitIeeeFloat)
{
float* src = (float*)sourceData.Data.ToPointer();
float* dst = (float*)destinationData.Data.ToPointer();
for (int i = 0; i < channels; i++, src++, dst++)
*dst = System.Math.Abs(*src);
for (int i = channels; i < length; i++, src++, dst++)
{
float abs = System.Math.Abs(*src);
*dst = dst[-channels] + Alpha * (abs - dst[-channels]);
}
}
}