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

Side by Side Diff: webrtc/modules/audio_coding/codecs/isac/fix/source/lattice.c

Issue 1227163003: Update audio code to use size_t more correctly, (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Review comments Created 5 years, 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 25 matching lines...) Expand all
36 */ 36 */
37 37
38 /* Function prototype: filtering ar_g_Q0[] and ar_f_Q0[] through an AR filter 38 /* Function prototype: filtering ar_g_Q0[] and ar_f_Q0[] through an AR filter
39 with coefficients cth_Q15[] and sth_Q15[]. 39 with coefficients cth_Q15[] and sth_Q15[].
40 Implemented for both generic and ARMv7 platforms. 40 Implemented for both generic and ARMv7 platforms.
41 */ 41 */
42 void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0, 42 void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0,
43 int16_t* ar_f_Q0, 43 int16_t* ar_f_Q0,
44 int16_t* cth_Q15, 44 int16_t* cth_Q15,
45 int16_t* sth_Q15, 45 int16_t* sth_Q15,
46 int16_t order_coef); 46 size_t order_coef);
47 47
48 /* Inner loop used for function WebRtcIsacfix_NormLatticeFilterMa(). It does: 48 /* Inner loop used for function WebRtcIsacfix_NormLatticeFilterMa(). It does:
49 for 0 <= n < HALF_SUBFRAMELEN - 1: 49 for 0 <= n < HALF_SUBFRAMELEN - 1:
50 *ptr2 = input2 * (*ptr2) + input0 * (*ptr0)); 50 *ptr2 = input2 * (*ptr2) + input0 * (*ptr0));
51 *ptr1 = input1 * (*ptr0) + input0 * (*ptr2); 51 *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
52 Note, function WebRtcIsacfix_FilterMaLoopNeon and WebRtcIsacfix_FilterMaLoopC 52 Note, function WebRtcIsacfix_FilterMaLoopNeon and WebRtcIsacfix_FilterMaLoopC
53 are not bit-exact. The accuracy by the ARM Neon function is same or better. 53 are not bit-exact. The accuracy by the ARM Neon function is same or better.
54 */ 54 */
55 void WebRtcIsacfix_FilterMaLoopC(int16_t input0, // Filter coefficient 55 void WebRtcIsacfix_FilterMaLoopC(int16_t input0, // Filter coefficient
56 int16_t input1, // Filter coefficient 56 int16_t input1, // Filter coefficient
(...skipping 22 matching lines...) Expand all
79 79
80 // Calculate *ptr1 = input1 * (*ptr0) + input0 * (*ptr2); 80 // Calculate *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
81 tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input1, *ptr0); // Q15*Q15>>15 = Q15 81 tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input1, *ptr0); // Q15*Q15>>15 = Q15
82 tmp32b = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr2); // Q15*Q15>>15 = Q15 82 tmp32b = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr2); // Q15*Q15>>15 = Q15
83 *ptr1 = tmp32a + tmp32b; // Q15 + Q15 = Q15 83 *ptr1 = tmp32a + tmp32b; // Q15 + Q15 = Q15
84 } 84 }
85 } 85 }
86 86
87 /* filter the signal using normalized lattice filter */ 87 /* filter the signal using normalized lattice filter */
88 /* MA filter */ 88 /* MA filter */
89 void WebRtcIsacfix_NormLatticeFilterMa(int16_t orderCoef, 89 void WebRtcIsacfix_NormLatticeFilterMa(size_t orderCoef,
90 int32_t *stateGQ15, 90 int32_t *stateGQ15,
91 int16_t *lat_inQ0, 91 int16_t *lat_inQ0,
92 int16_t *filt_coefQ15, 92 int16_t *filt_coefQ15,
93 int32_t *gain_lo_hiQ17, 93 int32_t *gain_lo_hiQ17,
94 int16_t lo_hi, 94 int16_t lo_hi,
95 int16_t *lat_outQ9) 95 int16_t *lat_outQ9)
96 { 96 {
97 int16_t sthQ15[MAX_AR_MODEL_ORDER]; 97 int16_t sthQ15[MAX_AR_MODEL_ORDER];
98 int16_t cthQ15[MAX_AR_MODEL_ORDER]; 98 int16_t cthQ15[MAX_AR_MODEL_ORDER];
99 99
100 int u, i, k, n; 100 int u, n;
101 size_t i, k;
101 int16_t temp2,temp3; 102 int16_t temp2,temp3;
102 int16_t ord_1 = orderCoef+1; 103 size_t ord_1 = orderCoef+1;
103 int32_t inv_cthQ16[MAX_AR_MODEL_ORDER]; 104 int32_t inv_cthQ16[MAX_AR_MODEL_ORDER];
104 105
105 int32_t gain32, fQtmp; 106 int32_t gain32, fQtmp;
106 int16_t gain16; 107 int16_t gain16;
107 int16_t gain_sh; 108 int16_t gain_sh;
108 109
109 int32_t tmp32, tmp32b; 110 int32_t tmp32, tmp32b;
110 int32_t fQ15vec[HALF_SUBFRAMELEN]; 111 int32_t fQ15vec[HALF_SUBFRAMELEN];
111 int32_t gQ15[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN]; 112 int32_t gQ15[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN];
112 int16_t sh; 113 int16_t sh;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 204
204 return; 205 return;
205 } 206 }
206 207
207 208
208 209
209 210
210 211
211 /* ----------------AR filter-------------------------*/ 212 /* ----------------AR filter-------------------------*/
212 /* filter the signal using normalized lattice filter */ 213 /* filter the signal using normalized lattice filter */
213 void WebRtcIsacfix_NormLatticeFilterAr(int16_t orderCoef, 214 void WebRtcIsacfix_NormLatticeFilterAr(size_t orderCoef,
214 int16_t *stateGQ0, 215 int16_t *stateGQ0,
215 int32_t *lat_inQ25, 216 int32_t *lat_inQ25,
216 int16_t *filt_coefQ15, 217 int16_t *filt_coefQ15,
217 int32_t *gain_lo_hiQ17, 218 int32_t *gain_lo_hiQ17,
218 int16_t lo_hi, 219 int16_t lo_hi,
219 int16_t *lat_outQ0) 220 int16_t *lat_outQ0)
220 { 221 {
221 int ii, n, k, i, u; 222 size_t ii, k, i;
223 int n, u;
222 int16_t sthQ15[MAX_AR_MODEL_ORDER]; 224 int16_t sthQ15[MAX_AR_MODEL_ORDER];
223 int16_t cthQ15[MAX_AR_MODEL_ORDER]; 225 int16_t cthQ15[MAX_AR_MODEL_ORDER];
224 int32_t tmp32; 226 int32_t tmp32;
225 227
226 228
227 int16_t tmpAR; 229 int16_t tmpAR;
228 int16_t ARfQ0vec[HALF_SUBFRAMELEN]; 230 int16_t ARfQ0vec[HALF_SUBFRAMELEN];
229 int16_t ARgQ0vec[MAX_AR_MODEL_ORDER+1]; 231 int16_t ARgQ0vec[MAX_AR_MODEL_ORDER+1];
230 232
231 int32_t inv_gain32; 233 int32_t inv_gain32;
232 int16_t inv_gain16; 234 int16_t inv_gain16;
233 int16_t den16; 235 int16_t den16;
234 int16_t sh; 236 int16_t sh;
235 237
236 int16_t temp2,temp3; 238 int16_t temp2,temp3;
237 int16_t ord_1 = orderCoef+1; 239 size_t ord_1 = orderCoef+1;
238 240
239 for (u=0;u<SUBFRAMES;u++) 241 for (u=0;u<SUBFRAMES;u++)
240 { 242 {
241 int32_t temp1 = u * HALF_SUBFRAMELEN; 243 int32_t temp1 = u * HALF_SUBFRAMELEN;
242 244
243 //set the denominator and numerator of the Direct Form 245 //set the denominator and numerator of the Direct Form
244 temp2 = (int16_t)(u * orderCoef); 246 temp2 = (int16_t)(u * orderCoef);
245 temp3 = (int16_t)(2 * u + lo_hi); 247 temp3 = (int16_t)(2 * u + lo_hi);
246 248
247 for (ii=0; ii<orderCoef; ii++) { 249 for (ii=0; ii<orderCoef; ii++) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 /* cannot use memcpy in the following */ 307 /* cannot use memcpy in the following */
306 308
307 for (i=0;i<ord_1;i++) 309 for (i=0;i<ord_1;i++)
308 { 310 {
309 stateGQ0[i] = ARgQ0vec[i]; 311 stateGQ0[i] = ARgQ0vec[i];
310 } 312 }
311 } 313 }
312 314
313 return; 315 return;
314 } 316 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698