static void dss_sp_shift_sq_sub(const int32_t *filter_buf,
                                int32_t *error_buf, int32_t *dst)
{
    int a;

    for (a = 0; a < 72; a++) {
        int i, tmp;

        tmp = dst[a] * filter_buf[0];

        for (i = 14; i > 0; i--)
            tmp -= error_buf[i] * (unsigned)filter_buf[i];

        for (i = 14; i > 0; i--)
            error_buf[i] = error_buf[i - 1];

        tmp = (int)(tmp + 4096U) >> 13;

        error_buf[1] = tmp;

        dst[a] = av_clip_int16(tmp);
    }
}