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

Side by Side Diff: webrtc/modules/audio_coding/codecs/ilbc/decode.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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 26 matching lines...) Expand all
37 *---------------------------------------------------------------*/ 37 *---------------------------------------------------------------*/
38 38
39 void WebRtcIlbcfix_DecodeImpl( 39 void WebRtcIlbcfix_DecodeImpl(
40 int16_t *decblock, /* (o) decoded signal block */ 40 int16_t *decblock, /* (o) decoded signal block */
41 const uint16_t *bytes, /* (i) encoded signal bits */ 41 const uint16_t *bytes, /* (i) encoded signal bits */
42 IlbcDecoder *iLBCdec_inst, /* (i/o) the decoder state 42 IlbcDecoder *iLBCdec_inst, /* (i/o) the decoder state
43 structure */ 43 structure */
44 int16_t mode /* (i) 0: bad packet, PLC, 44 int16_t mode /* (i) 0: bad packet, PLC,
45 1: normal */ 45 1: normal */
46 ) { 46 ) {
47 int i; 47 size_t i;
48 int16_t order_plus_one; 48 int16_t order_plus_one;
49 49
50 int16_t last_bit; 50 int16_t last_bit;
51 int16_t *data; 51 int16_t *data;
52 /* Stack based */ 52 /* Stack based */
53 int16_t decresidual[BLOCKL_MAX]; 53 int16_t decresidual[BLOCKL_MAX];
54 int16_t PLCresidual[BLOCKL_MAX + LPC_FILTERORDER]; 54 int16_t PLCresidual[BLOCKL_MAX + LPC_FILTERORDER];
55 int16_t syntdenum[NSUB_MAX*(LPC_FILTERORDER+1)]; 55 int16_t syntdenum[NSUB_MAX*(LPC_FILTERORDER+1)];
56 int16_t PLClpc[LPC_FILTERORDER + 1]; 56 int16_t PLClpc[LPC_FILTERORDER + 1];
57 #ifndef WEBRTC_ARCH_BIG_ENDIAN 57 #ifndef WEBRTC_ARCH_BIG_ENDIAN
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 WebRtcIlbcfix_DecoderInterpolateLsp(syntdenum, weightdenum, 99 WebRtcIlbcfix_DecoderInterpolateLsp(syntdenum, weightdenum,
100 lsfdeq, LPC_FILTERORDER, iLBCdec_inst) ; 100 lsfdeq, LPC_FILTERORDER, iLBCdec_inst) ;
101 101
102 /* Decode the residual using the cb and gain indexes */ 102 /* Decode the residual using the cb and gain indexes */
103 WebRtcIlbcfix_DecodeResidual(iLBCdec_inst, iLBCbits_inst, decresidual, syn tdenum); 103 WebRtcIlbcfix_DecodeResidual(iLBCdec_inst, iLBCbits_inst, decresidual, syn tdenum);
104 104
105 /* preparing the plc for a future loss! */ 105 /* preparing the plc for a future loss! */
106 WebRtcIlbcfix_DoThePlc( 106 WebRtcIlbcfix_DoThePlc(
107 PLCresidual, PLClpc, 0, decresidual, 107 PLCresidual, PLClpc, 0, decresidual,
108 syntdenum + (LPC_FILTERORDER + 1) * (iLBCdec_inst->nsub - 1), 108 syntdenum + (LPC_FILTERORDER + 1) * (iLBCdec_inst->nsub - 1),
109 (int16_t)(iLBCdec_inst->last_lag), iLBCdec_inst); 109 iLBCdec_inst->last_lag, iLBCdec_inst);
110 110
111 /* Use the output from doThePLC */ 111 /* Use the output from doThePLC */
112 WEBRTC_SPL_MEMCPY_W16(decresidual, PLCresidual, iLBCdec_inst->blockl); 112 WEBRTC_SPL_MEMCPY_W16(decresidual, PLCresidual, iLBCdec_inst->blockl);
113 } 113 }
114 114
115 } 115 }
116 116
117 if (mode == 0) { 117 if (mode == 0) {
118 /* the data is bad (either a PLC call 118 /* the data is bad (either a PLC call
119 * was made or a bit error was detected) 119 * was made or a bit error was detected)
120 */ 120 */
121 121
122 /* packet loss conceal */ 122 /* packet loss conceal */
123 123
124 WebRtcIlbcfix_DoThePlc(PLCresidual, PLClpc, 1, decresidual, syntdenum, 124 WebRtcIlbcfix_DoThePlc(PLCresidual, PLClpc, 1, decresidual, syntdenum,
125 (int16_t)(iLBCdec_inst->last_lag), iLBCdec_inst); 125 iLBCdec_inst->last_lag, iLBCdec_inst);
126 126
127 WEBRTC_SPL_MEMCPY_W16(decresidual, PLCresidual, iLBCdec_inst->blockl); 127 WEBRTC_SPL_MEMCPY_W16(decresidual, PLCresidual, iLBCdec_inst->blockl);
128 128
129 order_plus_one = LPC_FILTERORDER + 1; 129 order_plus_one = LPC_FILTERORDER + 1;
130 130
131 for (i = 0; i < iLBCdec_inst->nsub; i++) { 131 for (i = 0; i < iLBCdec_inst->nsub; i++) {
132 WEBRTC_SPL_MEMCPY_W16(syntdenum+(i*order_plus_one), 132 WEBRTC_SPL_MEMCPY_W16(syntdenum+(i*order_plus_one),
133 PLClpc, order_plus_one); 133 PLClpc, order_plus_one);
134 } 134 }
135 } 135 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 data+i*SUBL, data+i*SUBL, 181 data+i*SUBL, data+i*SUBL,
182 syntdenum+(i-2)*(LPC_FILTERORDER+1), 182 syntdenum+(i-2)*(LPC_FILTERORDER+1),
183 LPC_FILTERORDER+1, SUBL); 183 LPC_FILTERORDER+1, SUBL);
184 } 184 }
185 } 185 }
186 186
187 /* Save the filter state */ 187 /* Save the filter state */
188 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->syntMem, &data[iLBCdec_inst->blockl-LPC_ FILTERORDER], LPC_FILTERORDER); 188 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->syntMem, &data[iLBCdec_inst->blockl-LPC_ FILTERORDER], LPC_FILTERORDER);
189 189
190 } else { /* Enhancer not activated */ 190 } else { /* Enhancer not activated */
191 int16_t lag; 191 size_t lag;
192 192
193 /* Find last lag (since the enhancer is not called to give this info) */ 193 /* Find last lag (since the enhancer is not called to give this info) */
194 lag = 20; 194 lag = 20;
195 if (iLBCdec_inst->mode==20) { 195 if (iLBCdec_inst->mode==20) {
196 lag = (int16_t)WebRtcIlbcfix_XcorrCoef( 196 lag = WebRtcIlbcfix_XcorrCoef(
197 &decresidual[iLBCdec_inst->blockl-60], 197 &decresidual[iLBCdec_inst->blockl-60],
198 &decresidual[iLBCdec_inst->blockl-60-lag], 198 &decresidual[iLBCdec_inst->blockl-60-lag],
199 60, 199 60,
200 80, lag, -1); 200 80, lag, -1);
201 } else { 201 } else {
202 lag = (int16_t)WebRtcIlbcfix_XcorrCoef( 202 lag = WebRtcIlbcfix_XcorrCoef(
203 &decresidual[iLBCdec_inst->blockl-ENH_BLOCKL], 203 &decresidual[iLBCdec_inst->blockl-ENH_BLOCKL],
204 &decresidual[iLBCdec_inst->blockl-ENH_BLOCKL-lag], 204 &decresidual[iLBCdec_inst->blockl-ENH_BLOCKL-lag],
205 ENH_BLOCKL, 205 ENH_BLOCKL,
206 100, lag, -1); 206 100, lag, -1);
207 } 207 }
208 208
209 /* Store lag (it is needed if next packet is lost) */ 209 /* Store lag (it is needed if next packet is lost) */
210 (*iLBCdec_inst).last_lag = lag; 210 (*iLBCdec_inst).last_lag = lag;
211 211
212 /* copy data and run synthesis filter */ 212 /* copy data and run synthesis filter */
(...skipping 22 matching lines...) Expand all
235 235
236 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->old_syntdenum, 236 WEBRTC_SPL_MEMCPY_W16(iLBCdec_inst->old_syntdenum,
237 syntdenum, iLBCdec_inst->nsub*(LPC_FILTERORDER+1)); 237 syntdenum, iLBCdec_inst->nsub*(LPC_FILTERORDER+1));
238 238
239 iLBCdec_inst->prev_enh_pl=0; 239 iLBCdec_inst->prev_enh_pl=0;
240 240
241 if (mode==0) { /* PLC was used */ 241 if (mode==0) { /* PLC was used */
242 iLBCdec_inst->prev_enh_pl=1; 242 iLBCdec_inst->prev_enh_pl=1;
243 } 243 }
244 } 244 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698