View Raw SPL
/* FIR filter with end padding using CONV or FFT */
firflt(s, f, pad)
{
        local out, padlen;

        /* FIR filter the data with end padding */
        if (length(f) > setbufsize)
        {
                /* filter length > series buffer size, so use FFT's */
                out = fpadfilt(s, f, pad);
        }
        else
        {
                /* direct convolution */
                out = padfilt(s, f, pad);
        }
        
        setxoffset(out, xoffset(s));
        
        return(out);
}