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

Side by Side Diff: silk/A2NLSF.c

Issue 107243004: Updating Opus to release 1.1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/opus
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « package_version ('k') | silk/API.h » ('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 26 matching lines...) Expand all
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 30
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 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
54 for( k = 2; k <= dd; k++ ) { 54 for( k = 2; k <= dd; k++ ) {
55 for( n = dd; n > k; n-- ) { 55 for( n = dd; n > k; n-- ) {
56 p[ n - 2 ] -= p[ n ]; 56 p[ n - 2 ] -= p[ n ];
57 } 57 }
58 p[ k - 2 ] -= silk_LSHIFT( p[ k ], 1 ); 58 p[ k - 2 ] -= silk_LSHIFT( p[ k ], 1 );
59 } 59 }
60 } 60 }
61 /* Helper function for A2NLSF(..) */ 61 /* Helper function for A2NLSF(..) */
62 /* Polynomial evaluation */ 62 /* Polynomial evaluation */
63 static inline opus_int32 silk_A2NLSF_eval_poly( /* return the polynomial evaluat ion, in Q16 */ 63 static OPUS_INLINE opus_int32 silk_A2NLSF_eval_poly( /* return the polynomial ev aluation, in Q16 */
64 opus_int32 *p, /* I Polynomial, Q16 */ 64 opus_int32 *p, /* I Polynomial, Q16 */
65 const opus_int32 x, /* I Evaluation point, Q12 */ 65 const opus_int32 x, /* I Evaluation point, Q12 */
66 const opus_int dd /* I Order */ 66 const opus_int dd /* I Order */
67 ) 67 )
68 { 68 {
69 opus_int n; 69 opus_int n;
70 opus_int32 x_Q16, y32; 70 opus_int32 x_Q16, y32;
71 71
72 y32 = p[ dd ]; /* Q16 */ 72 y32 = p[ dd ]; /* Q16 */
73 x_Q16 = silk_LSHIFT( x, 4 ); 73 x_Q16 = silk_LSHIFT( x, 4 );
74 for( n = dd - 1; n >= 0; n-- ) { 74 for( n = dd - 1; n >= 0; n-- ) {
75 y32 = silk_SMLAWW( p[ n ], y32, x_Q16 ); /* Q16 */ 75 y32 = silk_SMLAWW( p[ n ], y32, x_Q16 ); /* Q16 */
76 } 76 }
77 return y32; 77 return y32;
78 } 78 }
79 79
80 static inline void silk_A2NLSF_init( 80 static OPUS_INLINE void silk_A2NLSF_init(
81 const opus_int32 *a_Q16, 81 const opus_int32 *a_Q16,
82 opus_int32 *P, 82 opus_int32 *P,
83 opus_int32 *Q, 83 opus_int32 *Q,
84 const opus_int dd 84 const opus_int dd
85 ) 85 )
86 { 86 {
87 opus_int k; 87 opus_int k;
88 88
89 /* Convert filter coefs to even and odd polynomials */ 89 /* Convert filter coefs to even and odd polynomials */
90 P[dd] = silk_LSHIFT( 1, 16 ); 90 P[dd] = silk_LSHIFT( 1, 16 );
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 ylo = silk_A2NLSF_eval_poly( p, xlo, dd ); 243 ylo = silk_A2NLSF_eval_poly( p, xlo, dd );
244 root_ix = 1; /* Index of current root */ 244 root_ix = 1; /* Index of current root */
245 } else { 245 } else {
246 root_ix = 0; /* Index of current root */ 246 root_ix = 0; /* Index of current root */
247 } 247 }
248 k = 1; /* Reset loop counter */ 248 k = 1; /* Reset loop counter */
249 } 249 }
250 } 250 }
251 } 251 }
252 } 252 }
OLDNEW
« no previous file with comments | « package_version ('k') | silk/API.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698