SUM8(32, -=); OUT_SAMPLE(sum); w++;
SUM8(sum, -=, w + 32, p); *samples = round_sample(sum);
static void synth_filter(MPADecodeContext *s1,                         int ch, int16_t *samples, int incr,                          int32_t sb_samples[SBLIMIT]){    int32_t tmp[32];    register MPA_INT *synth_buf, *p;    register MPA_INT *w;    int j, offset, v;#if FRAC_BITS <= 15    int sum;#else    int64_t sum;#endif    dct32(tmp, sb_samples);        offset = s1->synth_buf_offset[ch];    synth_buf = s1->synth_buf[ch] + offset;    for(j=0;j<32;j++) {        v = tmp[j];#if FRAC_BITS <= 15        /* NOTE: can cause a loss in precision if very high amplitude           sound */        if (v > 32767)            v = 32767;        else if (v < -32768)            v = -32768;#endif        synth_buf[j] = v;    }    /* copy to avoid wrap */    memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT));    w = window;    for(j=0;j<16;j++) {        sum = 0;        p = synth_buf + 16 + j;    /* 0-15  */        SUM8(0, +=);        p = synth_buf + 48 - j;    /* 32-47 */        SUM8(32, -=);        OUT_SAMPLE(sum);        w++;    }        p = synth_buf + 32; /* 48 */    sum = 0;    SUM8(32, -=);    OUT_SAMPLE(sum);    w++;    for(j=17;j<32;j++) {        sum = 0;        p = synth_buf + 48 - j; /* 17-31 */        SUM8(0, -=);        p = synth_buf + 16 + j; /* 49-63 */        SUM8(32, -=);        OUT_SAMPLE(sum);        w++;    }    offset = (offset - 32) & 511;    s1->synth_buf_offset[ch] = offset;}