Index: third_party/opus/src/silk/float/k2a_FLP.c |
diff --git a/third_party/opus/src/silk/float/k2a_FLP.c b/third_party/opus/src/silk/float/k2a_FLP.c |
index 12af4e76697a869831b73de533e316a8859b8163..1448008dbbed139791089132b0e391b2e7e07f6b 100644 |
--- a/third_party/opus/src/silk/float/k2a_FLP.c |
+++ b/third_party/opus/src/silk/float/k2a_FLP.c |
@@ -39,15 +39,16 @@ void silk_k2a_FLP( |
) |
{ |
opus_int k, n; |
- silk_float Atmp[ SILK_MAX_ORDER_LPC ]; |
+ silk_float rck, tmp1, tmp2; |
for( k = 0; k < order; k++ ) { |
- for( n = 0; n < k; n++ ) { |
- Atmp[ n ] = A[ n ]; |
+ rck = rc[ k ]; |
+ for( n = 0; n < (k + 1) >> 1; n++ ) { |
+ tmp1 = A[ n ]; |
+ tmp2 = A[ k - n - 1 ]; |
+ A[ n ] = tmp1 + tmp2 * rck; |
+ A[ k - n - 1 ] = tmp2 + tmp1 * rck; |
} |
- for( n = 0; n < k; n++ ) { |
- A[ n ] += Atmp[ k - n - 1 ] * rc[ k ]; |
- } |
- A[ k ] = -rc[ k ]; |
+ A[ k ] = -rck; |
} |
} |