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

Side by Side Diff: webrtc/modules/audio_coding/codecs/ilbc/do_plc.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, 3 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 15 matching lines...) Expand all
26 * and LP parameters. If no packet loss, update state. 26 * and LP parameters. If no packet loss, update state.
27 *---------------------------------------------------------------*/ 27 *---------------------------------------------------------------*/
28 28
29 void WebRtcIlbcfix_DoThePlc( 29 void WebRtcIlbcfix_DoThePlc(
30 int16_t *PLCresidual, /* (o) concealed residual */ 30 int16_t *PLCresidual, /* (o) concealed residual */
31 int16_t *PLClpc, /* (o) concealed LP parameters */ 31 int16_t *PLClpc, /* (o) concealed LP parameters */
32 int16_t PLI, /* (i) packet loss indicator 32 int16_t PLI, /* (i) packet loss indicator
33 0 - no PL, 1 = PL */ 33 0 - no PL, 1 = PL */
34 int16_t *decresidual, /* (i) decoded residual */ 34 int16_t *decresidual, /* (i) decoded residual */
35 int16_t *lpc, /* (i) decoded LPC (only used for no PL) */ 35 int16_t *lpc, /* (i) decoded LPC (only used for no PL) */
36 int16_t inlag, /* (i) pitch lag */ 36 size_t inlag, /* (i) pitch lag */
37 IlbcDecoder *iLBCdec_inst 37 IlbcDecoder *iLBCdec_inst
38 /* (i/o) decoder instance */ 38 /* (i/o) decoder instance */
39 ){ 39 ){
40 int16_t i; 40 size_t i;
41 int32_t cross, ener, cross_comp, ener_comp = 0; 41 int32_t cross, ener, cross_comp, ener_comp = 0;
42 int32_t measure, maxMeasure, energy; 42 int32_t measure, maxMeasure, energy;
43 int16_t max, crossSquareMax, crossSquare; 43 int16_t max, crossSquareMax, crossSquare;
44 int16_t j, lag, tmp1, tmp2, randlag; 44 size_t j, lag, randlag;
45 int16_t tmp1, tmp2;
45 int16_t shift1, shift2, shift3, shiftMax; 46 int16_t shift1, shift2, shift3, shiftMax;
46 int16_t scale3; 47 int16_t scale3;
47 int16_t corrLen; 48 size_t corrLen;
48 int32_t tmpW32, tmp2W32; 49 int32_t tmpW32, tmp2W32;
49 int16_t use_gain; 50 int16_t use_gain;
50 int16_t tot_gain; 51 int16_t tot_gain;
51 int16_t max_perSquare; 52 int16_t max_perSquare;
52 int16_t scale1, scale2; 53 int16_t scale1, scale2;
53 int16_t totscale; 54 int16_t totscale;
54 int32_t nom; 55 int32_t nom;
55 int16_t denom; 56 int16_t denom;
56 int16_t pitchfact; 57 int16_t pitchfact;
57 int16_t use_lag; 58 size_t use_lag;
58 int ind; 59 int ind;
59 int16_t randvec[BLOCKL_MAX]; 60 int16_t randvec[BLOCKL_MAX];
60 61
61 /* Packet Loss */ 62 /* Packet Loss */
62 if (PLI == 1) { 63 if (PLI == 1) {
63 64
64 (*iLBCdec_inst).consPLICount += 1; 65 (*iLBCdec_inst).consPLICount += 1;
65 66
66 /* if previous frame not lost, 67 /* if previous frame not lost,
67 determine pitch pred. gain */ 68 determine pitch pred. gain */
68 69
69 if (iLBCdec_inst->prevPLI != 1) { 70 if (iLBCdec_inst->prevPLI != 1) {
70 71
71 /* Maximum 60 samples are correlated, preserve as high accuracy 72 /* Maximum 60 samples are correlated, preserve as high accuracy
72 as possible without getting overflow */ 73 as possible without getting overflow */
73 max = WebRtcSpl_MaxAbsValueW16((*iLBCdec_inst).prevResidual, 74 max = WebRtcSpl_MaxAbsValueW16((*iLBCdec_inst).prevResidual,
74 (int16_t)iLBCdec_inst->blockl); 75 iLBCdec_inst->blockl);
75 scale3 = (WebRtcSpl_GetSizeInBits(max)<<1) - 25; 76 scale3 = (WebRtcSpl_GetSizeInBits(max)<<1) - 25;
76 if (scale3 < 0) { 77 if (scale3 < 0) {
77 scale3 = 0; 78 scale3 = 0;
78 } 79 }
79 80
80 /* Store scale for use when interpolating between the 81 /* Store scale for use when interpolating between the
81 * concealment and the received packet */ 82 * concealment and the received packet */
82 iLBCdec_inst->prevScale = scale3; 83 iLBCdec_inst->prevScale = scale3;
83 84
84 /* Search around the previous lag +/-3 to find the 85 /* Search around the previous lag +/-3 to find the
85 best pitch period */ 86 best pitch period */
86 lag = inlag - 3; 87 lag = inlag - 3;
87 88
88 /* Guard against getting outside the frame */ 89 /* Guard against getting outside the frame */
89 corrLen = WEBRTC_SPL_MIN(60, iLBCdec_inst->blockl-(inlag+3)); 90 corrLen = (size_t)WEBRTC_SPL_MIN(60, iLBCdec_inst->blockl-(inlag+3));
90 91
91 WebRtcIlbcfix_CompCorr( &cross, &ener, 92 WebRtcIlbcfix_CompCorr( &cross, &ener,
92 iLBCdec_inst->prevResidual, lag, iLBCdec_inst->blo ckl, corrLen, scale3); 93 iLBCdec_inst->prevResidual, lag, iLBCdec_inst->blo ckl, corrLen, scale3);
93 94
94 /* Normalize and store cross^2 and the number of shifts */ 95 /* Normalize and store cross^2 and the number of shifts */
95 shiftMax = WebRtcSpl_GetSizeInBits(WEBRTC_SPL_ABS_W32(cross))-15; 96 shiftMax = WebRtcSpl_GetSizeInBits(WEBRTC_SPL_ABS_W32(cross))-15;
96 crossSquareMax = (int16_t)(( 97 crossSquareMax = (int16_t)((
97 (int16_t)WEBRTC_SPL_SHIFT_W32(cross, -shiftMax) * 98 (int16_t)WEBRTC_SPL_SHIFT_W32(cross, -shiftMax) *
98 (int16_t)WEBRTC_SPL_SHIFT_W32(cross, -shiftMax)) >> 15); 99 (int16_t)WEBRTC_SPL_SHIFT_W32(cross, -shiftMax)) >> 15);
99 100
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 use_lag = 2*lag; 228 use_lag = 2*lag;
228 } 229 }
229 230
230 /* compute concealed residual */ 231 /* compute concealed residual */
231 energy = 0; 232 energy = 0;
232 233
233 for (i=0; i<iLBCdec_inst->blockl; i++) { 234 for (i=0; i<iLBCdec_inst->blockl; i++) {
234 235
235 /* noise component - 52 < randlagFIX < 117 */ 236 /* noise component - 52 < randlagFIX < 117 */
236 iLBCdec_inst->seed = (int16_t)(iLBCdec_inst->seed * 31821 + 13849); 237 iLBCdec_inst->seed = (int16_t)(iLBCdec_inst->seed * 31821 + 13849);
237 randlag = 53 + (int16_t)(iLBCdec_inst->seed & 63); 238 randlag = 53 + (iLBCdec_inst->seed & 63);
238 if (randlag > i) { 239 if (randlag > i) {
239 randvec[i] = 240 randvec[i] =
240 iLBCdec_inst->prevResidual[iLBCdec_inst->blockl + i - randlag]; 241 iLBCdec_inst->prevResidual[iLBCdec_inst->blockl + i - randlag];
241 } else { 242 } else {
242 randvec[i] = iLBCdec_inst->prevResidual[i - randlag]; 243 randvec[i] = iLBCdec_inst->prevResidual[i - randlag];
243 } 244 }
244 245
245 /* pitch repeatition component */ 246 /* pitch repeatition component */
246 if (use_lag > i) { 247 if (use_lag > i) {
247 PLCresidual[i] = 248 PLCresidual[i] =
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 iLBCdec_inst->consPLICount = 0; 296 iLBCdec_inst->consPLICount = 0;
296 } 297 }
297 298
298 /* update state */ 299 /* update state */
299 iLBCdec_inst->prevPLI = PLI; 300 iLBCdec_inst->prevPLI = PLI;
300 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->prevLpc, PLClpc, (LPC_FILTERORDER+1)); 301 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->prevLpc, PLClpc, (LPC_FILTERORDER+1));
301 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->prevResidual, PLCresidual, iLBCdec_inst->b lockl); 302 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->prevResidual, PLCresidual, iLBCdec_inst->b lockl);
302 303
303 return; 304 return;
304 } 305 }
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/codecs/ilbc/do_plc.h ('k') | webrtc/modules/audio_coding/codecs/ilbc/encode.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698