|
|
|
@@ -859,9 +859,9 @@ static av_always_inline int filter_3800(APEPredictor *p, |
|
|
|
return predictionA; |
|
|
|
} |
|
|
|
d2 = p->buf[delayA]; |
|
|
|
d1 = (p->buf[delayA] - p->buf[delayA - 1]) << 1; |
|
|
|
d0 = p->buf[delayA] + ((p->buf[delayA - 2] - p->buf[delayA - 1]) << 3); |
|
|
|
d3 = p->buf[delayB] * 2 - p->buf[delayB - 1]; |
|
|
|
d1 = (p->buf[delayA] - p->buf[delayA - 1]) * 2U; |
|
|
|
d0 = p->buf[delayA] + ((p->buf[delayA - 2] - p->buf[delayA - 1]) * 8U); |
|
|
|
d3 = p->buf[delayB] * 2U - p->buf[delayB - 1]; |
|
|
|
d4 = p->buf[delayB]; |
|
|
|
|
|
|
|
predictionA = d0 * p->coeffsA[filter][0] + |
|
|
|
@@ -881,7 +881,7 @@ static av_always_inline int filter_3800(APEPredictor *p, |
|
|
|
p->coeffsB[filter][1] -= (((d4 >> 30) & 2) - 1) * sign; |
|
|
|
|
|
|
|
p->filterB[filter] = p->lastA[filter] + (predictionB >> shift); |
|
|
|
p->filterA[filter] = p->filterB[filter] + ((p->filterA[filter] * 31) >> 5); |
|
|
|
p->filterA[filter] = p->filterB[filter] + ((int)(p->filterA[filter] * 31U) >> 5); |
|
|
|
|
|
|
|
return p->filterA[filter]; |
|
|
|
} |
|
|
|
@@ -902,7 +902,7 @@ static void long_filter_high_3800(int32_t *buffer, int order, int shift, int len |
|
|
|
dotprod = 0; |
|
|
|
sign = APESIGN(buffer[i]); |
|
|
|
for (j = 0; j < order; j++) { |
|
|
|
dotprod += delay[j] * coeffs[j]; |
|
|
|
dotprod += delay[j] * (unsigned)coeffs[j]; |
|
|
|
coeffs[j] += ((delay[j] >> 31) | 1) * sign; |
|
|
|
} |
|
|
|
buffer[i] -= dotprod >> shift; |
|
|
|
|