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

Side by Side Diff: silk/LPC_analysis_filter.c

Issue 882843002: Update to opus-HEAD-66611f1. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/opus.git@master
Patch Set: Add the contents of Makefile.mips back. Created 5 years, 10 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 | « silk/CNG.c ('k') | silk/NLSF_del_dec_quant.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 26 matching lines...) Expand all
37 /* NB! State is kept internally and the */ 37 /* NB! State is kept internally and the */
38 /* filter always starts with zero state */ 38 /* filter always starts with zero state */
39 /* first d output samples are set to zero */ 39 /* first d output samples are set to zero */
40 /*******************************************/ 40 /*******************************************/
41 41
42 void silk_LPC_analysis_filter( 42 void silk_LPC_analysis_filter(
43 opus_int16 *out, /* O Output signal */ 43 opus_int16 *out, /* O Output signal */
44 const opus_int16 *in, /* I Input signal */ 44 const opus_int16 *in, /* I Input signal */
45 const opus_int16 *B, /* I MA prediction coeffi cients, Q12 [order] */ 45 const opus_int16 *B, /* I MA prediction coeffi cients, Q12 [order] */
46 const opus_int32 len, /* I Signal length */ 46 const opus_int32 len, /* I Signal length */
47 const opus_int32 d /* I Filter order */ 47 const opus_int32 d, /* I Filter order */
48 int arch /* I Run-time architectur e */
48 ) 49 )
49 { 50 {
50 opus_int j; 51 opus_int j;
51 #ifdef FIXED_POINT 52 #ifdef FIXED_POINT
52 opus_int16 mem[SILK_MAX_ORDER_LPC]; 53 opus_int16 mem[SILK_MAX_ORDER_LPC];
53 opus_int16 num[SILK_MAX_ORDER_LPC]; 54 opus_int16 num[SILK_MAX_ORDER_LPC];
54 #else 55 #else
55 int ix; 56 int ix;
56 opus_int32 out32_Q12, out32; 57 opus_int32 out32_Q12, out32;
57 const opus_int16 *in_ptr; 58 const opus_int16 *in_ptr;
58 #endif 59 #endif
59 60
60 silk_assert( d >= 6 ); 61 silk_assert( d >= 6 );
61 silk_assert( (d & 1) == 0 ); 62 silk_assert( (d & 1) == 0 );
62 silk_assert( d <= len ); 63 silk_assert( d <= len );
63 64
64 #ifdef FIXED_POINT 65 #ifdef FIXED_POINT
65 silk_assert( d <= SILK_MAX_ORDER_LPC ); 66 silk_assert( d <= SILK_MAX_ORDER_LPC );
66 for ( j = 0; j < d; j++ ) { 67 for ( j = 0; j < d; j++ ) {
67 num[ j ] = -B[ j ]; 68 num[ j ] = -B[ j ];
68 } 69 }
69 for (j=0;j<d;j++) { 70 for (j=0;j<d;j++) {
70 mem[ j ] = in[ d - j - 1 ]; 71 mem[ j ] = in[ d - j - 1 ];
71 } 72 }
72 celt_fir( in + d, num, out + d, len - d, d, mem ); 73 celt_fir( in + d, num, out + d, len - d, d, mem, arch );
73 for ( j = 0; j < d; j++ ) { 74 for ( j = 0; j < d; j++ ) {
74 out[ j ] = 0; 75 out[ j ] = 0;
75 } 76 }
76 #else 77 #else
78 (void)arch;
77 for( ix = d; ix < len; ix++ ) { 79 for( ix = d; ix < len; ix++ ) {
78 in_ptr = &in[ ix - 1 ]; 80 in_ptr = &in[ ix - 1 ];
79 81
80 out32_Q12 = silk_SMULBB( in_ptr[ 0 ], B[ 0 ] ); 82 out32_Q12 = silk_SMULBB( in_ptr[ 0 ], B[ 0 ] );
81 /* Allowing wrap around so that two wraps can cancel each other. The rar e 83 /* Allowing wrap around so that two wraps can cancel each other. The rar e
82 cases where the result wraps around can only be triggered by invalid streams*/ 84 cases where the result wraps around can only be triggered by invalid streams*/
83 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -1 ], B[ 1 ] ); 85 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -1 ], B[ 1 ] );
84 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -2 ], B[ 2 ] ); 86 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -2 ], B[ 2 ] );
85 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -3 ], B[ 3 ] ); 87 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -3 ], B[ 3 ] );
86 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -4 ], B[ 4 ] ); 88 out32_Q12 = silk_SMLABB_ovflw( out32_Q12, in_ptr[ -4 ], B[ 4 ] );
(...skipping 10 matching lines...) Expand all
97 out32 = silk_RSHIFT_ROUND( out32_Q12, 12 ); 99 out32 = silk_RSHIFT_ROUND( out32_Q12, 12 );
98 100
99 /* Saturate output */ 101 /* Saturate output */
100 out[ ix ] = (opus_int16)silk_SAT16( out32 ); 102 out[ ix ] = (opus_int16)silk_SAT16( out32 );
101 } 103 }
102 104
103 /* Set first d output samples to zero */ 105 /* Set first d output samples to zero */
104 silk_memset( out, 0, d * sizeof( opus_int16 ) ); 106 silk_memset( out, 0, d * sizeof( opus_int16 ) );
105 #endif 107 #endif
106 } 108 }
OLDNEW
« no previous file with comments | « silk/CNG.c ('k') | silk/NLSF_del_dec_quant.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698