Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'silk/float/SigProc_FLP.h')
-rw-r--r--silk/float/SigProc_FLP.h154
1 files changed, 76 insertions, 78 deletions
diff --git a/silk/float/SigProc_FLP.h b/silk/float/SigProc_FLP.h
index b11c396d..bf1d8ee5 100644
--- a/silk/float/SigProc_FLP.h
+++ b/silk/float/SigProc_FLP.h
@@ -42,132 +42,127 @@ extern "C"
/* Chirp (bw expand) LP AR filter */
void silk_bwexpander_FLP(
- silk_float *ar, /* io AR filter to be expanded (without leading 1) */
- const opus_int d, /* i length of ar */
- const silk_float chirp /* i chirp factor (typically in range (0..1) ) */
+ silk_float *ar, /* I/O AR filter to be expanded (without leading 1) */
+ const opus_int d, /* I length of ar */
+ const silk_float chirp /* I chirp factor (typically in range (0..1) ) */
);
-/* compute inverse of LPC prediction gain, and */
-/* test if LPC coefficients are stable (all poles within unit circle) */
-/* this code is based on silk_FLP_a2k() */
-opus_int silk_LPC_inverse_pred_gain_FLP( /* O: returns 1 if unstable, otherwise 0 */
- silk_float *invGain, /* O: inverse prediction gain, energy domain */
- const silk_float *A, /* I: prediction coefficients [order] */
- opus_int32 order /* I: prediction order */
+/* compute inverse of LPC prediction gain, and */
+/* test if LPC coefficients are stable (all poles within unit circle) */
+/* this code is based on silk_FLP_a2k() */
+opus_int silk_LPC_inverse_pred_gain_FLP( /* O returns 1 if unstable, otherwise 0 */
+ silk_float *invGain, /* O inverse prediction gain, energy domain */
+ const silk_float *A, /* I prediction coefficients [order] */
+ opus_int32 order /* I prediction order */
);
-silk_float silk_schur_FLP( /* O returns residual energy */
- silk_float refl_coef[], /* O reflection coefficients (length order) */
- const silk_float auto_corr[], /* I autocorrelation sequence (length order+1) */
- opus_int order /* I order */
+silk_float silk_schur_FLP( /* O returns residual energy */
+ silk_float refl_coef[], /* O reflection coefficients (length order) */
+ const silk_float auto_corr[], /* I autocorrelation sequence (length order+1) */
+ opus_int order /* I order */
);
void silk_k2a_FLP(
- silk_float *A, /* O: prediction coefficients [order] */
- const silk_float *rc, /* I: reflection coefficients [order] */
- opus_int32 order /* I: prediction order */
+ silk_float *A, /* O prediction coefficients [order] */
+ const silk_float *rc, /* I reflection coefficients [order] */
+ opus_int32 order /* I prediction order */
);
/* Solve the normal equations using the Levinson-Durbin recursion */
-silk_float silk_levinsondurbin_FLP( /* O prediction error energy */
- silk_float A[], /* O prediction coefficients [order] */
- const silk_float corr[], /* I input auto-correlations [order + 1] */
- const opus_int order /* I prediction order */
+silk_float silk_levinsondurbin_FLP( /* O prediction error energy */
+ silk_float A[], /* O prediction coefficients [order] */
+ const silk_float corr[], /* I input auto-correlations [order + 1] */
+ const opus_int order /* I prediction order */
);
/* compute autocorrelation */
void silk_autocorrelation_FLP(
- silk_float *results, /* o result (length correlationCount) */
- const silk_float *inputData, /* i input data to correlate */
- opus_int inputDataSize, /* i length of input */
- opus_int correlationCount /* i number of correlation taps to compute */
+ silk_float *results, /* O result (length correlationCount) */
+ const silk_float *inputData, /* I input data to correlate */
+ opus_int inputDataSize, /* I length of input */
+ opus_int correlationCount /* I number of correlation taps to compute */
);
-/* Pitch estimator */
-#define SigProc_PE_MIN_COMPLEX 0
-#define SigProc_PE_MID_COMPLEX 1
-#define SigProc_PE_MAX_COMPLEX 2
-
-opus_int silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unvoiced */
- const silk_float *signal, /* I signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
- opus_int *pitch_out, /* O 4 pitch lag values */
- opus_int16 *lagIndex, /* O lag Index */
- opus_int8 *contourIndex, /* O pitch contour Index */
- silk_float *LTPCorr, /* I/O normalized correlation; input: value from previous frame */
- opus_int prevLag, /* I last lag of previous frame; set to zero is unvoiced */
- const silk_float search_thres1, /* I first stage threshold for lag candidates 0 - 1 */
- const silk_float search_thres2, /* I final threshold for lag candidates 0 - 1 */
- const opus_int Fs_kHz, /* I sample frequency (kHz) */
- const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
- const opus_int nb_subfr /* I number of 5 ms subframes */
+opus_int silk_pitch_analysis_core_FLP( /* O Voicing estimate: 0 voiced, 1 unvoiced */
+ const silk_float *frame, /* I Signal of length PE_FRAME_LENGTH_MS*Fs_kHz */
+ opus_int *pitch_out, /* O Pitch lag values [nb_subfr] */
+ opus_int16 *lagIndex, /* O Lag Index */
+ opus_int8 *contourIndex, /* O Pitch contour Index */
+ silk_float *LTPCorr, /* I/O Normalized correlation; input: value from previous frame */
+ opus_int prevLag, /* I Last lag of previous frame; set to zero is unvoiced */
+ const silk_float search_thres1, /* I First stage threshold for lag candidates 0 - 1 */
+ const silk_float search_thres2, /* I Final threshold for lag candidates 0 - 1 */
+ const opus_int Fs_kHz, /* I sample frequency (kHz) */
+ const opus_int complexity, /* I Complexity setting, 0-2, where 2 is highest */
+ const opus_int nb_subfr /* I Number of 5 ms subframes */
);
-#define PI (3.1415926536f)
-
void silk_insertion_sort_decreasing_FLP(
- silk_float *a, /* I/O: Unsorted / Sorted vector */
- opus_int *idx, /* O: Index vector for the sorted elements */
- const opus_int L, /* I: Vector length */
- const opus_int K /* I: Number of correctly sorted positions */
+ silk_float *a, /* I/O Unsorted / Sorted vector */
+ opus_int *idx, /* O Index vector for the sorted elements */
+ const opus_int L, /* I Vector length */
+ const opus_int K /* I Number of correctly sorted positions */
);
/* Compute reflection coefficients from input signal */
-silk_float silk_burg_modified_FLP( /* O returns residual energy */
- silk_float A[], /* O prediction coefficients (length order) */
- const silk_float x[], /* I input signal, length: nb_subfr*(D+L_sub) */
- const opus_int subfr_length, /* I input signal subframe length (including D preceeding samples) */
- const opus_int nb_subfr, /* I number of subframes stacked in x */
- const silk_float WhiteNoiseFrac, /* I fraction added to zero-lag autocorrelation */
- const opus_int D /* I order */
+silk_float silk_burg_modified_FLP( /* O returns residual energy */
+ silk_float A[], /* O prediction coefficients (length order) */
+ const silk_float x[], /* I input signal, length: nb_subfr*(D+L_sub) */
+ const opus_int subfr_length, /* I input signal subframe length (incl. D preceeding samples) */
+ const opus_int nb_subfr, /* I number of subframes stacked in x */
+ const silk_float WhiteNoiseFrac, /* I fraction added to zero-lag autocorrelation */
+ const opus_int D /* I order */
);
/* multiply a vector by a constant */
void silk_scale_vector_FLP(
- silk_float *data1,
- silk_float gain,
- opus_int dataSize
+ silk_float *data1,
+ silk_float gain,
+ opus_int dataSize
);
/* copy and multiply a vector by a constant */
void silk_scale_copy_vector_FLP(
- silk_float *data_out,
- const silk_float *data_in,
- silk_float gain,
- opus_int dataSize
+ silk_float *data_out,
+ const silk_float *data_in,
+ silk_float gain,
+ opus_int dataSize
);
/* inner product of two silk_float arrays, with result as double */
double silk_inner_product_FLP(
- const silk_float *data1,
- const silk_float *data2,
- opus_int dataSize
+ const silk_float *data1,
+ const silk_float *data2,
+ opus_int dataSize
);
/* sum of squares of a silk_float array, with result as double */
double silk_energy_FLP(
- const silk_float *data,
- opus_int dataSize
+ const silk_float *data,
+ opus_int dataSize
);
/********************************************************************/
-/* MACROS */
+/* MACROS */
/********************************************************************/
-#define silk_min_float(a, b) (((a) < (b)) ? (a) : (b))
-#define silk_max_float(a, b) (((a) > (b)) ? (a) : (b))
-#define silk_abs_float(a) ((silk_float)fabs(a))
+#define PI (3.1415926536f)
+
+#define silk_min_float( a, b ) (((a) < (b)) ? (a) : (b))
+#define silk_max_float( a, b ) (((a) > (b)) ? (a) : (b))
+#define silk_abs_float( a ) ((silk_float)fabs(a))
-#define silk_LIMIT_float( a, limit1, limit2) ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
- : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))))
+#define silk_LIMIT_float( a, limit1, limit2 ) ((limit1) > (limit2) ? ((a) > (limit1) ? (limit1) : ((a) < (limit2) ? (limit2) : (a))) \
+ : ((a) > (limit2) ? (limit2) : ((a) < (limit1) ? (limit1) : (a))))
/* sigmoid function */
-static inline silk_float silk_sigmoid(silk_float x)
+static inline silk_float silk_sigmoid( silk_float x )
{
return (silk_float)(1.0 / (1.0 + exp(-x)));
}
/* floating-point to integer conversion (rounding) */
-static inline opus_int32 silk_float2int(double x)
+static inline opus_int32 silk_float2int( double x )
{
#ifdef _WIN32
double t = x + 6755399441055744.0;
@@ -185,7 +180,7 @@ static inline void silk_float2short_array(
)
{
opus_int32 k;
- for (k = length-1; k >= 0; k--) {
+ for( k = length - 1; k >= 0; k-- ) {
#ifdef _WIN32
double t = in[k] + 6755399441055744.0;
out[k] = (opus_int16)silk_SAT16(*(( opus_int32 * )( &t )));
@@ -204,13 +199,16 @@ static inline void silk_short2float_array(
)
{
opus_int32 k;
- for (k = length-1; k >= 0; k--) {
+ for( k = length - 1; k >= 0; k-- ) {
out[k] = (silk_float)in[k];
}
}
/* using log2() helps the fixed-point conversion */
-static inline silk_float silk_log2( double x ) { return ( silk_float )( 3.32192809488736 * log10( x ) ); }
+static inline silk_float silk_log2( double x )
+{
+ return ( silk_float )( 3.32192809488736 * log10( x ) );
+}
#ifdef __cplusplus
}