Update SILK code using the CELT range coder
[opus.git] / src_SigProc_FIX / SKP_Silk_Inlines.h
similarity index 90%
rename from src/SKP_Silk_Inlines.h
rename to src_SigProc_FIX/SKP_Silk_Inlines.h
index 66a09bd..6eb0bb1 100644 (file)
@@ -26,7 +26,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ***********************************************************************/\r
 \r
 /*! \file SKP_Silk_Inlines.h\r
- *  \brief SigProcFix_Inlines.h defines inline signal processing functions.\r
+ *  \brief SKP_Silk_Inlines.h defines inline signal processing functions.\r
  */\r
 \r
 #ifndef _SKP_SILK_FIX_INLINES_H_\r
@@ -57,20 +57,15 @@ SKP_INLINE void SKP_Silk_CLZ_FRAC(SKP_int32 in,            /* I: input */
                                     SKP_int32 *lz,           /* O: number of leading zeros */\r
                                     SKP_int32 *frac_Q7)      /* O: the 7 bits right after the leading one */\r
 {\r
-    SKP_int32 leadingZeros;\r
+    SKP_int32 lzeros = SKP_Silk_CLZ32(in);\r
 \r
-    leadingZeros = SKP_Silk_CLZ32(in);\r
-    *lz = leadingZeros;\r
-    if( leadingZeros < 24 ) { \r
-        *frac_Q7 = SKP_RSHIFT(in, 24 - leadingZeros) & 0x7F;\r
-    } else {\r
-        *frac_Q7 = SKP_LSHIFT(in, leadingZeros - 24) & 0x7F;\r
-    }\r
+    * lz = lzeros;\r
+    * frac_Q7 = SKP_ROR32(in, 24 - lzeros) & 0x7f;\r
 }\r
 \r
 /* Approximation of square root                                          */\r
-/* Accuracy: < +/- 10% for output values > 15                            */\r
-/*             < +/- 2.5% for output values > 120                        */\r
+/* Accuracy: < +/- 10%  for output values > 15                           */\r
+/*           < +/- 2.5% for output values > 120                          */\r
 SKP_INLINE SKP_int32 SKP_Silk_SQRT_APPROX(SKP_int32 x)\r
 {\r
     SKP_int32 y, lz, frac_Q7;\r
@@ -125,9 +120,9 @@ SKP_INLINE SKP_int32 SKP_Silk_norm32(SKP_int32 a) {
 \r
 /* Divide two int32 values and return result as int32 in a given Q-domain */\r
 SKP_INLINE SKP_int32 SKP_DIV32_varQ(    /* O    returns a good approximation of "(a32 << Qres) / b32" */\r
-    const SKP_int32        a32,         /* I    numerator (Q0)                  */\r
-    const SKP_int32        b32,         /* I    denominator (Q0)                */\r
-    const SKP_int        Qres           /* I    Q-domain of result (>= 0)       */\r
+    const SKP_int32     a32,            /* I    numerator (Q0)                  */\r
+    const SKP_int32     b32,            /* I    denominator (Q0)                */\r
+    const SKP_int       Qres            /* I    Q-domain of result (>= 0)       */\r
 )\r
 {\r
     SKP_int   a_headrm, b_headrm, lshift;\r
@@ -170,8 +165,8 @@ SKP_INLINE SKP_int32 SKP_DIV32_varQ(    /* O    returns a good approximation of
 \r
 /* Invert int32 value and return result as int32 in a given Q-domain */\r
 SKP_INLINE SKP_int32 SKP_INVERSE32_varQ(    /* O    returns a good approximation of "(1 << Qres) / b32" */\r
-    const SKP_int32        b32,             /* I    denominator (Q0)                */\r
-    const SKP_int        Qres               /* I    Q-domain of result (> 0)        */\r
+    const SKP_int32     b32,                /* I    denominator (Q0)                */\r
+    const SKP_int       Qres                /* I    Q-domain of result (> 0)        */\r
 )\r
 {\r
     SKP_int   b_headrm, lshift;\r