Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: third_party/opus/src/silk/A2NLSF.c

Issue 2962373002: [Opus] Update to v1.2.1 (Closed)
Patch Set: Pre-increment instead of post-increment Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/opus/src/releases.sha2 ('k') | third_party/opus/src/silk/CNG.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 22 matching lines...) Expand all
33 33
34 #ifdef HAVE_CONFIG_H 34 #ifdef HAVE_CONFIG_H
35 #include "config.h" 35 #include "config.h"
36 #endif 36 #endif
37 37
38 #include "SigProc_FIX.h" 38 #include "SigProc_FIX.h"
39 #include "tables.h" 39 #include "tables.h"
40 40
41 /* Number of binary divisions, when not in low complexity mode */ 41 /* Number of binary divisions, when not in low complexity mode */
42 #define BIN_DIV_STEPS_A2NLSF_FIX 3 /* must be no higher than 16 - log2( LSF _COS_TAB_SZ_FIX ) */ 42 #define BIN_DIV_STEPS_A2NLSF_FIX 3 /* must be no higher than 16 - log2( LSF _COS_TAB_SZ_FIX ) */
43 #define MAX_ITERATIONS_A2NLSF_FIX 30 43 #define MAX_ITERATIONS_A2NLSF_FIX 16
44 44
45 /* Helper function for A2NLSF(..) */ 45 /* Helper function for A2NLSF(..) */
46 /* Transforms polynomials from cos(n*f) to cos(f)^n */ 46 /* Transforms polynomials from cos(n*f) to cos(f)^n */
47 static OPUS_INLINE void silk_A2NLSF_trans_poly( 47 static OPUS_INLINE void silk_A2NLSF_trans_poly(
48 opus_int32 *p, /* I/O Polynomial */ 48 opus_int32 *p, /* I/O Polynomial */
49 const opus_int dd /* I Polynomial order (= fi lter order / 2 ) */ 49 const opus_int dd /* I Polynomial order (= fi lter order / 2 ) */
50 ) 50 )
51 { 51 {
52 opus_int k, n; 52 opus_int k, n;
53 53
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 } 123 }
124 124
125 /* Compute Normalized Line Spectral Frequencies (NLSFs) from whitening filter co efficients */ 125 /* Compute Normalized Line Spectral Frequencies (NLSFs) from whitening filter co efficients */
126 /* If not all roots are found, the a_Q16 coefficients are bandwidth expanded unt il convergence. */ 126 /* If not all roots are found, the a_Q16 coefficients are bandwidth expanded unt il convergence. */
127 void silk_A2NLSF( 127 void silk_A2NLSF(
128 opus_int16 *NLSF, /* O Normalized Line Spec tral Frequencies in Q15 (0..2^15-1) [d] */ 128 opus_int16 *NLSF, /* O Normalized Line Spec tral Frequencies in Q15 (0..2^15-1) [d] */
129 opus_int32 *a_Q16, /* I/O Monic whitening filt er coefficients in Q16 [d] */ 129 opus_int32 *a_Q16, /* I/O Monic whitening filt er coefficients in Q16 [d] */
130 const opus_int d /* I Filter order (must b e even) */ 130 const opus_int d /* I Filter order (must b e even) */
131 ) 131 )
132 { 132 {
133 opus_int i, k, m, dd, root_ix, ffrac; 133 opus_int i, k, m, dd, root_ix, ffrac;
134 opus_int32 xlo, xhi, xmid; 134 opus_int32 xlo, xhi, xmid;
135 opus_int32 ylo, yhi, ymid, thr; 135 opus_int32 ylo, yhi, ymid, thr;
136 opus_int32 nom, den; 136 opus_int32 nom, den;
137 opus_int32 P[ SILK_MAX_ORDER_LPC / 2 + 1 ]; 137 opus_int32 P[ SILK_MAX_ORDER_LPC / 2 + 1 ];
138 opus_int32 Q[ SILK_MAX_ORDER_LPC / 2 + 1 ]; 138 opus_int32 Q[ SILK_MAX_ORDER_LPC / 2 + 1 ];
139 opus_int32 *PQ[ 2 ]; 139 opus_int32 *PQ[ 2 ];
140 opus_int32 *p; 140 opus_int32 *p;
141 141
142 /* Store pointers to array */ 142 /* Store pointers to array */
143 PQ[ 0 ] = P; 143 PQ[ 0 ] = P;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 xlo = xhi; 232 xlo = xhi;
233 ylo = yhi; 233 ylo = yhi;
234 thr = 0; 234 thr = 0;
235 235
236 if( k > LSF_COS_TAB_SZ_FIX ) { 236 if( k > LSF_COS_TAB_SZ_FIX ) {
237 i++; 237 i++;
238 if( i > MAX_ITERATIONS_A2NLSF_FIX ) { 238 if( i > MAX_ITERATIONS_A2NLSF_FIX ) {
239 /* Set NLSFs to white spectrum and exit */ 239 /* Set NLSFs to white spectrum and exit */
240 NLSF[ 0 ] = (opus_int16)silk_DIV32_16( 1 << 15, d + 1 ); 240 NLSF[ 0 ] = (opus_int16)silk_DIV32_16( 1 << 15, d + 1 );
241 for( k = 1; k < d; k++ ) { 241 for( k = 1; k < d; k++ ) {
242 NLSF[ k ] = (opus_int16)silk_SMULBB( k + 1, NLSF[ 0 ] ); 242 NLSF[ k ] = (opus_int16)silk_ADD16( NLSF[ k-1 ], NLSF[ 0 ] );
243 } 243 }
244 return; 244 return;
245 } 245 }
246 246
247 /* Error: Apply progressively more bandwidth expansion and run a gain */ 247 /* Error: Apply progressively more bandwidth expansion and run a gain */
248 silk_bwexpander_32( a_Q16, d, 65536 - silk_SMULBB( 10 + i, i ) ) ; /* 10_Q16 = 0.00015*/ 248 silk_bwexpander_32( a_Q16, d, 65536 - silk_LSHIFT( 1, i ) );
249 249
250 silk_A2NLSF_init( a_Q16, P, Q, dd ); 250 silk_A2NLSF_init( a_Q16, P, Q, dd );
251 p = P; /* Pointer to polynomial */ 251 p = P; /* Pointer to polynomial */
252 xlo = silk_LSFCosTab_FIX_Q12[ 0 ]; /* Q12*/ 252 xlo = silk_LSFCosTab_FIX_Q12[ 0 ]; /* Q12*/
253 ylo = silk_A2NLSF_eval_poly( p, xlo, dd ); 253 ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
254 if( ylo < 0 ) { 254 if( ylo < 0 ) {
255 /* Set the first NLSF to zero and move on to the next */ 255 /* Set the first NLSF to zero and move on to the next */
256 NLSF[ 0 ] = 0; 256 NLSF[ 0 ] = 0;
257 p = Q; /* Pointer to polynomial */ 257 p = Q; /* Pointer to polynomial */
258 ylo = silk_A2NLSF_eval_poly( p, xlo, dd ); 258 ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
259 root_ix = 1; /* Index of current root */ 259 root_ix = 1; /* Index of current root */
260 } else { 260 } else {
261 root_ix = 0; /* Index of current root */ 261 root_ix = 0; /* Index of current root */
262 } 262 }
263 k = 1; /* Reset loop counter */ 263 k = 1; /* Reset loop counter */
264 } 264 }
265 } 265 }
266 } 266 }
267 } 267 }
OLDNEW
« no previous file with comments | « third_party/opus/src/releases.sha2 ('k') | third_party/opus/src/silk/CNG.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698