OLD | NEW |
1 /*********************************************************************** | 1 /*********************************************************************** |
2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. | 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. |
3 Redistribution and use in source and binary forms, with or without | 3 Redistribution and use in source and binary forms, with or without |
4 modification, are permitted provided that the following conditions | 4 modification, are permitted provided that the following conditions |
5 are met: | 5 are met: |
6 - Redistributions of source code must retain the above copyright notice, | 6 - Redistributions of source code must retain the above copyright notice, |
7 this list of conditions and the following disclaimer. | 7 this list of conditions and the following disclaimer. |
8 - Redistributions in binary form must reproduce the above copyright | 8 - Redistributions in binary form must reproduce the above copyright |
9 notice, this list of conditions and the following disclaimer in the | 9 notice, this list of conditions and the following disclaimer in the |
10 documentation and/or other materials provided with the distribution. | 10 documentation and/or other materials provided with the distribution. |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 const silk_float *frame, /* I Signal of length PE_FRAME_LE
NGTH_MS*Fs_kHz */ | 87 const silk_float *frame, /* I Signal of length PE_FRAME_LE
NGTH_MS*Fs_kHz */ |
88 opus_int *pitch_out, /* O Pitch lag values [nb_subfr]
*/ | 88 opus_int *pitch_out, /* O Pitch lag values [nb_subfr]
*/ |
89 opus_int16 *lagIndex, /* O Lag Index
*/ | 89 opus_int16 *lagIndex, /* O Lag Index
*/ |
90 opus_int8 *contourIndex, /* O Pitch contour Index
*/ | 90 opus_int8 *contourIndex, /* O Pitch contour Index
*/ |
91 silk_float *LTPCorr, /* I/O Normalized correlation; inpu
t: value from previous frame */ | 91 silk_float *LTPCorr, /* I/O Normalized correlation; inpu
t: value from previous frame */ |
92 opus_int prevLag, /* I Last lag of previous frame;
set to zero is unvoiced */ | 92 opus_int prevLag, /* I Last lag of previous frame;
set to zero is unvoiced */ |
93 const silk_float search_thres1, /* I First stage threshold for la
g candidates 0 - 1 */ | 93 const silk_float search_thres1, /* I First stage threshold for la
g candidates 0 - 1 */ |
94 const silk_float search_thres2, /* I Final threshold for lag cand
idates 0 - 1 */ | 94 const silk_float search_thres2, /* I Final threshold for lag cand
idates 0 - 1 */ |
95 const opus_int Fs_kHz, /* I sample frequency (kHz)
*/ | 95 const opus_int Fs_kHz, /* I sample frequency (kHz)
*/ |
96 const opus_int complexity, /* I Complexity setting, 0-2, whe
re 2 is highest */ | 96 const opus_int complexity, /* I Complexity setting, 0-2, whe
re 2 is highest */ |
97 const opus_int nb_subfr /* I Number of 5 ms subframes
*/ | 97 const opus_int nb_subfr, /* I Number of 5 ms subframes
*/ |
| 98 int arch /* I Run-time architecture
*/ |
98 ); | 99 ); |
99 | 100 |
100 void silk_insertion_sort_decreasing_FLP( | 101 void silk_insertion_sort_decreasing_FLP( |
101 silk_float *a, /* I/O Unsorted / Sorted vector
*/ | 102 silk_float *a, /* I/O Unsorted / Sorted vector
*/ |
102 opus_int *idx, /* O Index vector for the sorted
elements */ | 103 opus_int *idx, /* O Index vector for the sorted
elements */ |
103 const opus_int L, /* I Vector length
*/ | 104 const opus_int L, /* I Vector length
*/ |
104 const opus_int K /* I Number of correctly sorted p
ositions */ | 105 const opus_int K /* I Number of correctly sorted p
ositions */ |
105 ); | 106 ); |
106 | 107 |
107 /* Compute reflection coefficients from input signal */ | 108 /* Compute reflection coefficients from input signal */ |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 /* MACROS */ | 147 /* MACROS */ |
147 /********************************************************************/ | 148 /********************************************************************/ |
148 | 149 |
149 #define PI (3.1415926536f) | 150 #define PI (3.1415926536f) |
150 | 151 |
151 #define silk_min_float( a, b ) (((a) < (b)) ? (a) : (b)) | 152 #define silk_min_float( a, b ) (((a) < (b)) ? (a) : (b)) |
152 #define silk_max_float( a, b ) (((a) > (b)) ? (a) : (b)) | 153 #define silk_max_float( a, b ) (((a) > (b)) ? (a) : (b)) |
153 #define silk_abs_float( a ) ((silk_float)fabs(a)) | 154 #define silk_abs_float( a ) ((silk_float)fabs(a)) |
154 | 155 |
155 /* sigmoid function */ | 156 /* sigmoid function */ |
156 static inline silk_float silk_sigmoid( silk_float x ) | 157 static OPUS_INLINE silk_float silk_sigmoid( silk_float x ) |
157 { | 158 { |
158 return (silk_float)(1.0 / (1.0 + exp(-x))); | 159 return (silk_float)(1.0 / (1.0 + exp(-x))); |
159 } | 160 } |
160 | 161 |
161 /* floating-point to integer conversion (rounding) */ | 162 /* floating-point to integer conversion (rounding) */ |
162 static inline opus_int32 silk_float2int( silk_float x ) | 163 static OPUS_INLINE opus_int32 silk_float2int( silk_float x ) |
163 { | 164 { |
164 return (opus_int32)float2int( x ); | 165 return (opus_int32)float2int( x ); |
165 } | 166 } |
166 | 167 |
167 /* floating-point to integer conversion (rounding) */ | 168 /* floating-point to integer conversion (rounding) */ |
168 static inline void silk_float2short_array( | 169 static OPUS_INLINE void silk_float2short_array( |
169 opus_int16 *out, | 170 opus_int16 *out, |
170 const silk_float *in, | 171 const silk_float *in, |
171 opus_int32 length | 172 opus_int32 length |
172 ) | 173 ) |
173 { | 174 { |
174 opus_int32 k; | 175 opus_int32 k; |
175 for( k = length - 1; k >= 0; k-- ) { | 176 for( k = length - 1; k >= 0; k-- ) { |
176 out[k] = silk_SAT16( (opus_int32)float2int( in[k] ) ); | 177 out[k] = silk_SAT16( (opus_int32)float2int( in[k] ) ); |
177 } | 178 } |
178 } | 179 } |
179 | 180 |
180 /* integer to floating-point conversion */ | 181 /* integer to floating-point conversion */ |
181 static inline void silk_short2float_array( | 182 static OPUS_INLINE void silk_short2float_array( |
182 silk_float *out, | 183 silk_float *out, |
183 const opus_int16 *in, | 184 const opus_int16 *in, |
184 opus_int32 length | 185 opus_int32 length |
185 ) | 186 ) |
186 { | 187 { |
187 opus_int32 k; | 188 opus_int32 k; |
188 for( k = length - 1; k >= 0; k-- ) { | 189 for( k = length - 1; k >= 0; k-- ) { |
189 out[k] = (silk_float)in[k]; | 190 out[k] = (silk_float)in[k]; |
190 } | 191 } |
191 } | 192 } |
192 | 193 |
193 /* using log2() helps the fixed-point conversion */ | 194 /* using log2() helps the fixed-point conversion */ |
194 static inline silk_float silk_log2( double x ) | 195 static OPUS_INLINE silk_float silk_log2( double x ) |
195 { | 196 { |
196 return ( silk_float )( 3.32192809488736 * log10( x ) ); | 197 return ( silk_float )( 3.32192809488736 * log10( x ) ); |
197 } | 198 } |
198 | 199 |
199 #ifdef __cplusplus | 200 #ifdef __cplusplus |
200 } | 201 } |
201 #endif | 202 #endif |
202 | 203 |
203 #endif /* SILK_SIGPROC_FLP_H */ | 204 #endif /* SILK_SIGPROC_FLP_H */ |
OLD | NEW |