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

Side by Side Diff: webrtc/modules/audio_coding/codecs/ilbc/enhancer_interface.c

Issue 1230503003: Update a ton of audio code to use size_t more correctly and in general reduce (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync 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 12 matching lines...) Expand all
23 #include "xcorr_coef.h" 23 #include "xcorr_coef.h"
24 #include "enhancer.h" 24 #include "enhancer.h"
25 #include "hp_output.h" 25 #include "hp_output.h"
26 26
27 27
28 28
29 /*----------------------------------------------------------------* 29 /*----------------------------------------------------------------*
30 * interface for enhancer 30 * interface for enhancer
31 *---------------------------------------------------------------*/ 31 *---------------------------------------------------------------*/
32 32
33 int WebRtcIlbcfix_EnhancerInterface( /* (o) Estimated lag in end of in[] */ 33 size_t WebRtcIlbcfix_EnhancerInterface( /* (o) Estimated lag in end of in[] */
34 int16_t *out, /* (o) enhanced signal */ 34 int16_t *out, /* (o) enhanced signal */
35 int16_t *in, /* (i) unenhanced signal */ 35 int16_t *in, /* (i) unenhanced signal */
36 IlbcDecoder *iLBCdec_inst /* (i) buffers etc */ 36 IlbcDecoder *iLBCdec_inst /* (i) buffers etc */
37 ){ 37 ){
38 int iblock; 38 int iblock;
39 int lag=20, tlag=20; 39 size_t lag=20, tlag=20;
40 int inLen=iLBCdec_inst->blockl+120; 40 size_t inLen=iLBCdec_inst->blockl+120;
41 int16_t scale, scale1, plc_blockl; 41 int16_t scale, scale1;
42 size_t plc_blockl;
42 int16_t *enh_buf, *enh_period; 43 int16_t *enh_buf, *enh_period;
43 int32_t tmp1, tmp2, max, new_blocks; 44 int32_t tmp1, tmp2, max, new_blocks;
44 int16_t *enh_bufPtr1; 45 int16_t *enh_bufPtr1;
45 int i, k; 46 size_t i;
47 int k;
46 int16_t EnChange; 48 int16_t EnChange;
47 int16_t SqrtEnChange; 49 int16_t SqrtEnChange;
48 int16_t inc; 50 int16_t inc;
49 int16_t win; 51 int16_t win;
50 int16_t *tmpW16ptr; 52 int16_t *tmpW16ptr;
51 int16_t startPos; 53 int16_t startPos;
52 int16_t *plc_pred; 54 int16_t *plc_pred;
53 int16_t *target, *regressor; 55 int16_t *target, *regressor;
54 int16_t max16; 56 int16_t max16;
55 int shifts; 57 int shifts;
56 int32_t ener; 58 int32_t ener;
57 int16_t enerSh; 59 int16_t enerSh;
58 int16_t corrSh; 60 int16_t corrSh;
59 int16_t ind, sh; 61 size_t ind;
62 int16_t sh;
60 int16_t start, stop; 63 int16_t start, stop;
61 /* Stack based */ 64 /* Stack based */
62 int16_t totsh[3]; 65 int16_t totsh[3];
63 int16_t downsampled[(BLOCKL_MAX+120)>>1]; /* length 180 */ 66 int16_t downsampled[(BLOCKL_MAX+120)>>1]; /* length 180 */
64 int32_t corr32[50]; 67 int32_t corr32[50];
65 int32_t corrmax[3]; 68 int32_t corrmax[3];
66 int16_t corr16[3]; 69 int16_t corr16[3];
67 int16_t en16[3]; 70 int16_t en16[3];
68 int16_t lagmax[3]; 71 int16_t lagmax[3];
69 72
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 ind = i; 164 ind = i;
162 } 165 }
163 } else { 166 } else {
164 sh = WEBRTC_SPL_MIN(31, totsh[i]-totsh[ind]); 167 sh = WEBRTC_SPL_MIN(31, totsh[i]-totsh[ind]);
165 if ((corr16[ind] * en16[i]) >> sh < corr16[i] * en16[ind]) { 168 if ((corr16[ind] * en16[i]) >> sh < corr16[i] * en16[ind]) {
166 ind = i; 169 ind = i;
167 } 170 }
168 } 171 }
169 } 172 }
170 173
171 lag = lagmax[ind] + 10; 174 lag = (size_t)(lagmax[ind] + 10);
172 175
173 /* Store the estimated lag in the non-downsampled domain */ 176 /* Store the estimated lag in the non-downsampled domain */
174 enh_period[ENH_NBLOCKS_TOT - new_blocks + iblock] = (int16_t)(lag * 8); 177 enh_period[ENH_NBLOCKS_TOT - new_blocks + iblock] = (int16_t)(lag * 8);
175 178
176 /* Store the estimated lag for backward PLC */ 179 /* Store the estimated lag for backward PLC */
177 if (iLBCdec_inst->prev_enh_pl==1) { 180 if (iLBCdec_inst->prev_enh_pl==1) {
178 if (!iblock) { 181 if (!iblock) {
179 tlag = lag * 2; 182 tlag = lag * 2;
180 } 183 }
181 } else { 184 } else {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 if (iLBCdec_inst->prev_enh_pl==1) { 220 if (iLBCdec_inst->prev_enh_pl==1) {
218 if (lag>plc_blockl) { 221 if (lag>plc_blockl) {
219 WEBRTC_SPL_MEMCPY_W16(plc_pred, &in[lag-plc_blockl], plc_blockl); 222 WEBRTC_SPL_MEMCPY_W16(plc_pred, &in[lag-plc_blockl], plc_blockl);
220 } else { 223 } else {
221 WEBRTC_SPL_MEMCPY_W16(&plc_pred[plc_blockl-lag], in, lag); 224 WEBRTC_SPL_MEMCPY_W16(&plc_pred[plc_blockl-lag], in, lag);
222 WEBRTC_SPL_MEMCPY_W16( 225 WEBRTC_SPL_MEMCPY_W16(
223 plc_pred, &enh_buf[ENH_BUFL-iLBCdec_inst->blockl-plc_blockl+lag], 226 plc_pred, &enh_buf[ENH_BUFL-iLBCdec_inst->blockl-plc_blockl+lag],
224 (plc_blockl-lag)); 227 (plc_blockl-lag));
225 } 228 }
226 } else { 229 } else {
227 int pos; 230 size_t pos;
228 231
229 pos = plc_blockl; 232 pos = plc_blockl;
230 233
231 while (lag<pos) { 234 while (lag<pos) {
232 WEBRTC_SPL_MEMCPY_W16(&plc_pred[pos-lag], in, lag); 235 WEBRTC_SPL_MEMCPY_W16(&plc_pred[pos-lag], in, lag);
233 pos = pos - lag; 236 pos = pos - lag;
234 } 237 }
235 WEBRTC_SPL_MEMCPY_W16(plc_pred, &in[lag-pos], pos); 238 WEBRTC_SPL_MEMCPY_W16(plc_pred, &in[lag-pos], pos);
236 239
237 } 240 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 276
274 tmp2=WEBRTC_SPL_SHIFT_W32(tmp2, (scale1)); 277 tmp2=WEBRTC_SPL_SHIFT_W32(tmp2, (scale1));
275 EnChange = (int16_t)WebRtcSpl_DivW32W16(tmp2, 278 EnChange = (int16_t)WebRtcSpl_DivW32W16(tmp2,
276 (int16_t)tmp1); 279 (int16_t)tmp1);
277 280
278 /* Calculate the Sqrt of the energy in Q15 ((14+16)/2) */ 281 /* Calculate the Sqrt of the energy in Q15 ((14+16)/2) */
279 SqrtEnChange = (int16_t)WebRtcSpl_SqrtFloor(EnChange << 14); 282 SqrtEnChange = (int16_t)WebRtcSpl_SqrtFloor(EnChange << 14);
280 283
281 284
282 /* Multiply first part of vector with 2*SqrtEnChange */ 285 /* Multiply first part of vector with 2*SqrtEnChange */
283 WebRtcSpl_ScaleVector(plc_pred, plc_pred, SqrtEnChange, 286 WebRtcSpl_ScaleVector(plc_pred, plc_pred, SqrtEnChange, plc_blockl-16,
284 (int16_t)(plc_blockl-16), 14); 287 14);
285 288
286 /* Calculate increase parameter for window part (16 last samples) */ 289 /* Calculate increase parameter for window part (16 last samples) */
287 /* (1-2*SqrtEnChange)/16 in Q15 */ 290 /* (1-2*SqrtEnChange)/16 in Q15 */
288 inc = 2048 - (SqrtEnChange >> 3); 291 inc = 2048 - (SqrtEnChange >> 3);
289 292
290 win=0; 293 win=0;
291 tmpW16ptr=&plc_pred[plc_blockl-16]; 294 tmpW16ptr=&plc_pred[plc_blockl-16];
292 295
293 for (i=16;i>0;i--) { 296 for (i=16;i>0;i--) {
294 *tmpW16ptr = (int16_t)( 297 *tmpW16ptr = (int16_t)(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 enh_bufPtr1, 339 enh_bufPtr1,
337 synt, 340 synt,
338 &iLBCdec_inst->old_syntdenum[ 341 &iLBCdec_inst->old_syntdenum[
339 (iLBCdec_inst->nsub-1)*(LPC_FILTERORDER+1)], 342 (iLBCdec_inst->nsub-1)*(LPC_FILTERORDER+1)],
340 LPC_FILTERORDER+1, lag); 343 LPC_FILTERORDER+1, lag);
341 344
342 WEBRTC_SPL_MEMCPY_W16(&synt[-LPC_FILTERORDER], &synt[lag-LPC_FILTERORDER], 345 WEBRTC_SPL_MEMCPY_W16(&synt[-LPC_FILTERORDER], &synt[lag-LPC_FILTERORDER],
343 LPC_FILTERORDER); 346 LPC_FILTERORDER);
344 WebRtcIlbcfix_HpOutput(synt, (int16_t*)WebRtcIlbcfix_kHpOutCoefs, 347 WebRtcIlbcfix_HpOutput(synt, (int16_t*)WebRtcIlbcfix_kHpOutCoefs,
345 iLBCdec_inst->hpimemy, iLBCdec_inst->hpimemx, 348 iLBCdec_inst->hpimemy, iLBCdec_inst->hpimemx,
346 (int16_t)lag); 349 lag);
347 WebRtcSpl_FilterARFastQ12( 350 WebRtcSpl_FilterARFastQ12(
348 enh_bufPtr1, synt, 351 enh_bufPtr1, synt,
349 &iLBCdec_inst->old_syntdenum[ 352 &iLBCdec_inst->old_syntdenum[
350 (iLBCdec_inst->nsub-1)*(LPC_FILTERORDER+1)], 353 (iLBCdec_inst->nsub-1)*(LPC_FILTERORDER+1)],
351 LPC_FILTERORDER+1, lag); 354 LPC_FILTERORDER+1, lag);
352 355
353 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->syntMem, &synt[lag-LPC_FILTERORDER], 356 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->syntMem, &synt[lag-LPC_FILTERORDER],
354 LPC_FILTERORDER); 357 LPC_FILTERORDER);
355 WebRtcIlbcfix_HpOutput(synt, (int16_t*)WebRtcIlbcfix_kHpOutCoefs, 358 WebRtcIlbcfix_HpOutput(synt, (int16_t*)WebRtcIlbcfix_kHpOutCoefs,
356 iLBCdec_inst->hpimemy, iLBCdec_inst->hpimemx, 359 iLBCdec_inst->hpimemy, iLBCdec_inst->hpimemx,
357 (int16_t)lag); 360 lag);
358 } 361 }
359 } 362 }
360 363
361 364
362 /* Perform enhancement block by block */ 365 /* Perform enhancement block by block */
363 366
364 for (iblock = 0; iblock<new_blocks; iblock++) { 367 for (iblock = 0; iblock<new_blocks; iblock++) {
365 WebRtcIlbcfix_Enhancer(out + iblock * ENH_BLOCKL, 368 WebRtcIlbcfix_Enhancer(out + iblock * ENH_BLOCKL,
366 enh_buf, 369 enh_buf,
367 ENH_BUFL, 370 ENH_BUFL,
368 (int16_t)(iblock * ENH_BLOCKL + startPos), 371 (int16_t)(iblock * ENH_BLOCKL + startPos),
369 enh_period, 372 enh_period,
370 (int16_t*)WebRtcIlbcfix_kEnhPlocs, ENH_NBLOCKS_TOT); 373 (int16_t*)WebRtcIlbcfix_kEnhPlocs, ENH_NBLOCKS_TOT);
371 } 374 }
372 375
373 return (lag); 376 return (lag);
374 } 377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698