mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
optimize encode_residual_lpc()
37%/45%/90% faster on core2/k8/p4, making flac encoding overall 15%/17%/40% faster at compression_level>=8 (less at low levels). Originally committed as revision 10585 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
7ecae905b6
commit
f74471e043
@ -838,17 +838,22 @@ static void encode_residual_lpc(int32_t *res, const int32_t *smp, int n,
|
||||
int order, const int32_t *coefs, int shift)
|
||||
{
|
||||
int i, j;
|
||||
int32_t pred;
|
||||
|
||||
for(i=0; i<order; i++) {
|
||||
res[i] = smp[i];
|
||||
}
|
||||
for(i=order; i<n; i++) {
|
||||
pred = 0;
|
||||
for(j=0; j<order; j++) {
|
||||
pred += coefs[j] * smp[i-j-1];
|
||||
for(i=order; i<n; i+=2) {
|
||||
int32_t c = coefs[0];
|
||||
int32_t p0 = 0, p1 = c*smp[i];
|
||||
for(j=1; j<order; j++) {
|
||||
int32_t s = smp[i-j];
|
||||
p0 += c*s;
|
||||
c = coefs[j];
|
||||
p1 += c*s;
|
||||
}
|
||||
res[i] = smp[i] - (pred >> shift);
|
||||
p0 += c*smp[i-order];
|
||||
res[i+0] = smp[i+0] - (p0 >> shift);
|
||||
res[i+1] = smp[i+1] - (p1 >> shift);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user