Mercurial > libavcodec.hg
comparison celp_filters.c @ 10003:24952f1a8979 libavcodec
cosmetics: K&R coding style
author | diego |
---|---|
date | Sun, 02 Aug 2009 10:34:30 +0000 |
parents | 2838045383c5 |
children | 454cb6aa43a3 |
comparison
equal
deleted
inserted
replaced
10002:878d449793e1 | 10003:24952f1a8979 |
---|---|
23 #include <inttypes.h> | 23 #include <inttypes.h> |
24 | 24 |
25 #include "avcodec.h" | 25 #include "avcodec.h" |
26 #include "celp_filters.h" | 26 #include "celp_filters.h" |
27 | 27 |
28 void ff_celp_convolve_circ( | 28 void ff_celp_convolve_circ(int16_t* fc_out, |
29 int16_t* fc_out, | 29 const int16_t* fc_in, |
30 const int16_t* fc_in, | 30 const int16_t* filter, |
31 const int16_t* filter, | 31 int len) |
32 int len) | |
33 { | 32 { |
34 int i, k; | 33 int i, k; |
35 | 34 |
36 memset(fc_out, 0, len * sizeof(int16_t)); | 35 memset(fc_out, 0, len * sizeof(int16_t)); |
37 | 36 |
38 /* Since there are few pulses over an entire subframe (i.e. almost | 37 /* Since there are few pulses over an entire subframe (i.e. almost |
39 all fc_in[i] are zero) it is faster to loop over fc_in first. */ | 38 all fc_in[i] are zero) it is faster to loop over fc_in first. */ |
40 for(i=0; i<len; i++) | 39 for (i = 0; i < len; i++) { |
41 { | 40 if (fc_in[i]) { |
42 if(fc_in[i]) | 41 for (k = 0; k < i; k++) |
43 { | |
44 for(k=0; k<i; k++) | |
45 fc_out[k] += (fc_in[i] * filter[len + k - i]) >> 15; | 42 fc_out[k] += (fc_in[i] * filter[len + k - i]) >> 15; |
46 | 43 |
47 for(k=i; k<len; k++) | 44 for (k = i; k < len; k++) |
48 fc_out[k] += (fc_in[i] * filter[ k - i]) >> 15; | 45 fc_out[k] += (fc_in[i] * filter[ k - i]) >> 15; |
49 } | 46 } |
50 } | 47 } |
51 } | 48 } |
52 | 49 |
53 int ff_celp_lp_synthesis_filter( | 50 int ff_celp_lp_synthesis_filter(int16_t *out, |
54 int16_t *out, | 51 const int16_t* filter_coeffs, |
55 const int16_t* filter_coeffs, | 52 const int16_t* in, |
56 const int16_t* in, | 53 int buffer_length, |
57 int buffer_length, | 54 int filter_length, |
58 int filter_length, | 55 int stop_on_overflow, |
59 int stop_on_overflow, | 56 int rounder) |
60 int rounder) | |
61 { | 57 { |
62 int i,n; | 58 int i,n; |
63 | 59 |
64 // Avoids a +1 in the inner loop. | 60 // Avoids a +1 in the inner loop. |
65 filter_length++; | 61 filter_length++; |
66 | 62 |
67 for(n=0; n<buffer_length; n++) | 63 for (n = 0; n < buffer_length; n++) { |
68 { | |
69 int sum = rounder; | 64 int sum = rounder; |
70 for(i=1; i<filter_length; i++) | 65 for (i = 1; i < filter_length; i++) |
71 sum -= filter_coeffs[i-1] * out[n-i]; | 66 sum -= filter_coeffs[i-1] * out[n-i]; |
72 | 67 |
73 sum = (sum >> 12) + in[n]; | 68 sum = (sum >> 12) + in[n]; |
74 | 69 |
75 if(sum + 0x8000 > 0xFFFFU) | 70 if (sum + 0x8000 > 0xFFFFU) { |
76 { | 71 if (stop_on_overflow) |
77 if(stop_on_overflow) | |
78 return 1; | 72 return 1; |
79 sum = (sum >> 31) ^ 32767; | 73 sum = (sum >> 31) ^ 32767; |
80 } | 74 } |
81 out[n] = sum; | 75 out[n] = sum; |
82 } | 76 } |
83 | 77 |
84 return 0; | 78 return 0; |
85 } | 79 } |
86 | 80 |
87 void ff_celp_lp_synthesis_filterf( | 81 void ff_celp_lp_synthesis_filterf(float *out, |
88 float *out, | 82 const float* filter_coeffs, |
89 const float* filter_coeffs, | 83 const float* in, |
90 const float* in, | 84 int buffer_length, |
91 int buffer_length, | 85 int filter_length) |
92 int filter_length) | |
93 { | 86 { |
94 int i,n; | 87 int i,n; |
95 | 88 |
96 // Avoids a +1 in the inner loop. | 89 // Avoids a +1 in the inner loop. |
97 filter_length++; | 90 filter_length++; |
98 | 91 |
99 for(n=0; n<buffer_length; n++) | 92 for (n = 0; n < buffer_length; n++) { |
100 { | |
101 out[n] = in[n]; | 93 out[n] = in[n]; |
102 for(i=1; i<filter_length; i++) | 94 for (i = 1; i < filter_length; i++) |
103 out[n] -= filter_coeffs[i-1] * out[n-i]; | 95 out[n] -= filter_coeffs[i-1] * out[n-i]; |
104 } | 96 } |
105 } | 97 } |
106 | 98 |
107 void ff_celp_lp_zero_synthesis_filterf( | 99 void ff_celp_lp_zero_synthesis_filterf(float *out, |
108 float *out, | 100 const float* filter_coeffs, |
109 const float* filter_coeffs, | 101 const float* in, |
110 const float* in, | 102 int buffer_length, |
111 int buffer_length, | 103 int filter_length) |
112 int filter_length) | |
113 { | 104 { |
114 int i,n; | 105 int i,n; |
115 | 106 |
116 // Avoids a +1 in the inner loop. | 107 // Avoids a +1 in the inner loop. |
117 filter_length++; | 108 filter_length++; |
118 | 109 |
119 for(n=0; n<buffer_length; n++) | 110 for (n = 0; n < buffer_length; n++) { |
120 { | |
121 out[n] = in[n]; | 111 out[n] = in[n]; |
122 for(i=1; i<filter_length; i++) | 112 for (i = 1; i < filter_length; i++) |
123 out[n] -= filter_coeffs[i-1] * in[n-i]; | 113 out[n] -= filter_coeffs[i-1] * in[n-i]; |
124 } | 114 } |
125 } | 115 } |