SILK update with LBRR and some bugfixes
[opus.git] / src_SigProc_FLP / SKP_Silk_schur_FLP.c
index 93362c9..a6dd24c 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************\r
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. \r
+Copyright (c) 2006-2011, Skype Limited. All rights reserved. \r
 Redistribution and use in source and binary forms, with or without \r
 modification, (subject to the limitations in the disclaimer below) \r
 are permitted provided that the following conditions are met:\r
@@ -36,36 +36,38 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \r
 #include "SKP_Silk_SigProc_FLP.h"\r
 \r
-void SKP_Silk_schur_FLP(  \r
+SKP_float SKP_Silk_schur_FLP(           /* O    returns residual energy                     */\r
     SKP_float       refl_coef[],        /* O    reflection coefficients (length order)      */\r
-    const SKP_float auto_corr[],        /* I    autotcorreation sequence (length order+1)   */\r
+    const SKP_float auto_corr[],        /* I    autotcorrelation sequence (length order+1)  */\r
     SKP_int         order               /* I    order                                       */\r
 )\r
 {\r
     SKP_int   k, n;\r
-    SKP_float C[SKP_Silk_MAX_ORDER_LPC + 1][2];\r
+    SKP_float C[ SKP_Silk_MAX_ORDER_LPC + 1 ][ 2 ];\r
     SKP_float Ctmp1, Ctmp2, rc_tmp;\r
     \r
-    /* copy correlations */\r
-    for( k = 0; k < order+1; k++ ){\r
-        C[k][0] = C[k][1] = auto_corr[k];\r
+    /* Copy correlations */\r
+    for( k = 0; k < order+1; k++ ) {\r
+        C[ k ][ 0 ] = C[ k ][ 1 ] = auto_corr[ k ];\r
     }\r
 \r
-    for( k = 0; k < order; k++ )\r
-    {\r
-        /* get reflection coefficient */\r
-        rc_tmp = -C[k + 1][0] / SKP_max_float(C[0][1], 1e-9f);\r
+    for( k = 0; k < order; k++ ) {\r
+        /* Get reflection coefficient */\r
+        rc_tmp = -C[ k + 1 ][ 0 ] / SKP_max_float( C[ 0 ][ 1 ], 1e-9f );\r
 \r
-        /* save the output */\r
-        refl_coef[k] = rc_tmp;\r
+        /* Save the output */\r
+        refl_coef[ k ] = rc_tmp;\r
 \r
-        /* update correlations */\r
+        /* Update correlations */\r
         for( n = 0; n < order - k; n++ ){\r
-            Ctmp1 = C[n + k + 1][0];\r
-            Ctmp2 = C[n][1];\r
-            C[n + k + 1][0] = Ctmp1 + Ctmp2 * rc_tmp;\r
-            C[n][1]         = Ctmp2 + Ctmp1 * rc_tmp;\r
+            Ctmp1 = C[ n + k + 1 ][ 0 ];\r
+            Ctmp2 = C[ n ][ 1 ];\r
+            C[ n + k + 1 ][ 0 ] = Ctmp1 + Ctmp2 * rc_tmp;\r
+            C[ n ][ 1 ]         = Ctmp2 + Ctmp1 * rc_tmp;\r
         }\r
     }\r
+\r
+    /* Return residual energy */\r
+    return C[ 0 ][ 1 ];\r
 }\r
 \r