mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-13 21:17:06 +00:00
FS-3486 --resolve update silk
This commit is contained in:
1 parent
b426ec0bfa
commit
fdf74f449f
148 files changed
+2723
-7653
No files matched your search
@@ -1,5 +1,5 @@
|
||||
/***********************************************************************
|
||||
Copyright (c) 2006-2010, Skype Limited. All rights reserved.
|
||||
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, (subject to the limitations in the disclaimer below)
|
||||
are permitted provided that the following conditions are met:
|
||||
@@ -57,20 +57,15 @@ SKP_INLINE void SKP_Silk_CLZ_FRAC(SKP_int32 in, /* I: input */
|
||||
SKP_int32 *lz, /* O: number of leading zeros */
|
||||
SKP_int32 *frac_Q7) /* O: the 7 bits right after the leading one */
|
||||
{
|
||||
SKP_int32 leadingZeros;
|
||||
SKP_int32 lzeros = SKP_Silk_CLZ32(in);
|
||||
|
||||
leadingZeros = SKP_Silk_CLZ32(in);
|
||||
*lz = leadingZeros;
|
||||
if( leadingZeros < 24 ) {
|
||||
*frac_Q7 = SKP_RSHIFT(in, 24 - leadingZeros) & 0x7F;
|
||||
} else {
|
||||
*frac_Q7 = SKP_LSHIFT(in, leadingZeros - 24) & 0x7F;
|
||||
}
|
||||
* lz = lzeros;
|
||||
* frac_Q7 = SKP_ROR32(in, 24 - lzeros) & 0x7f;
|
||||
}
|
||||
|
||||
/* Approximation of square root */
|
||||
/* Accuracy: < +/- 10% for output values > 15 */
|
||||
/* < +/- 2.5% for output values > 120 */
|
||||
/* Accuracy: < +/- 10% for output values > 15 */
|
||||
/* < +/- 2.5% for output values > 120 */
|
||||
SKP_INLINE SKP_int32 SKP_Silk_SQRT_APPROX(SKP_int32 x)
|
||||
{
|
||||
SKP_int32 y, lz, frac_Q7;
|
||||
@@ -125,9 +120,9 @@ SKP_INLINE SKP_int32 SKP_Silk_norm32(SKP_int32 a) {
|
||||
|
||||
/* Divide two int32 values and return result as int32 in a given Q-domain */
|
||||
SKP_INLINE SKP_int32 SKP_DIV32_varQ( /* O returns a good approximation of "(a32 << Qres) / b32" */
|
||||
const SKP_int32 a32, /* I numerator (Q0) */
|
||||
const SKP_int32 b32, /* I denominator (Q0) */
|
||||
const SKP_int Qres /* I Q-domain of result (>= 0) */
|
||||
const SKP_int32 a32, /* I numerator (Q0) */
|
||||
const SKP_int32 b32, /* I denominator (Q0) */
|
||||
const SKP_int Qres /* I Q-domain of result (>= 0) */
|
||||
)
|
||||
{
|
||||
SKP_int a_headrm, b_headrm, lshift;
|
||||
@@ -170,14 +165,15 @@ SKP_INLINE SKP_int32 SKP_DIV32_varQ( /* O returns a good approximation of
|
||||
|
||||
/* Invert int32 value and return result as int32 in a given Q-domain */
|
||||
SKP_INLINE SKP_int32 SKP_INVERSE32_varQ( /* O returns a good approximation of "(1 << Qres) / b32" */
|
||||
const SKP_int32 b32, /* I denominator (Q0) */
|
||||
const SKP_int Qres /* I Q-domain of result (> 0) */
|
||||
const SKP_int32 b32, /* I denominator (Q0) */
|
||||
const SKP_int Qres /* I Q-domain of result (> 0) */
|
||||
)
|
||||
{
|
||||
SKP_int b_headrm, lshift;
|
||||
SKP_int32 b32_inv, b32_nrm, err_Q32, result;
|
||||
|
||||
SKP_assert( b32 != 0 );
|
||||
SKP_assert( b32 != SKP_int32_MIN ); /* SKP_int32_MIN is not handled by SKP_abs */
|
||||
SKP_assert( Qres > 0 );
|
||||
|
||||
/* Compute number of bits head room and normalize input */
|
||||
@@ -277,4 +273,4 @@ SKP_INLINE SKP_int32 SKP_Silk_COS_APPROX_Q24( /* O returns approximate
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //_SKP_SILK_FIX_INLINES_H_
|
||||
#endif /*_SKP_SILK_FIX_INLINES_H_*/
|
||||
Reference in new issue
Block a user