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

Side by Side Diff: webrtc/modules/audio_coding/codecs/cng/webrtc_cng.c

Issue 1225173002: 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) 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 17 matching lines...) Expand all
28 int16_t dec_EfiltstateLow[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 28 int16_t dec_EfiltstateLow[WEBRTC_CNG_MAX_LPC_ORDER + 1];
29 int16_t dec_order; 29 int16_t dec_order;
30 int16_t dec_target_scale_factor; /* Q29 */ 30 int16_t dec_target_scale_factor; /* Q29 */
31 int16_t dec_used_scale_factor; /* Q29 */ 31 int16_t dec_used_scale_factor; /* Q29 */
32 int16_t target_scale_factor; /* Q13 */ 32 int16_t target_scale_factor; /* Q13 */
33 int16_t errorcode; 33 int16_t errorcode;
34 int16_t initflag; 34 int16_t initflag;
35 } WebRtcCngDecoder; 35 } WebRtcCngDecoder;
36 36
37 typedef struct WebRtcCngEncoder_ { 37 typedef struct WebRtcCngEncoder_ {
38 int16_t enc_nrOfCoefs; 38 size_t enc_nrOfCoefs;
39 int enc_sampfreq; 39 int enc_sampfreq;
40 int16_t enc_interval; 40 int16_t enc_interval;
41 int16_t enc_msSinceSID; 41 int16_t enc_msSinceSID;
42 int32_t enc_Energy; 42 int32_t enc_Energy;
43 int16_t enc_reflCoefs[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 43 int16_t enc_reflCoefs[WEBRTC_CNG_MAX_LPC_ORDER + 1];
44 int32_t enc_corrVector[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 44 int32_t enc_corrVector[WEBRTC_CNG_MAX_LPC_ORDER + 1];
45 uint32_t enc_seed; 45 uint32_t enc_seed;
46 int16_t errorcode; 46 int16_t errorcode;
47 int16_t initflag; 47 int16_t initflag;
48 } WebRtcCngEncoder; 48 } WebRtcCngEncoder;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 * Input: 221 * Input:
222 * - cng_inst : Pointer to created instance 222 * - cng_inst : Pointer to created instance
223 * - speech : Signal (noise) to be analyzed 223 * - speech : Signal (noise) to be analyzed
224 * - nrOfSamples : Size of speech vector 224 * - nrOfSamples : Size of speech vector
225 * - bytesOut : Nr of bytes to transmit, might be 0 225 * - bytesOut : Nr of bytes to transmit, might be 0
226 * 226 *
227 * Return value : 0 - Ok 227 * Return value : 0 - Ok
228 * -1 - Error 228 * -1 - Error
229 */ 229 */
230 int WebRtcCng_Encode(CNG_enc_inst* cng_inst, int16_t* speech, 230 int WebRtcCng_Encode(CNG_enc_inst* cng_inst, int16_t* speech,
231 int16_t nrOfSamples, uint8_t* SIDdata, 231 size_t nrOfSamples, uint8_t* SIDdata,
232 int16_t* bytesOut, int16_t forceSID) { 232 size_t* bytesOut, int16_t forceSID) {
233 WebRtcCngEncoder* inst = (WebRtcCngEncoder*) cng_inst; 233 WebRtcCngEncoder* inst = (WebRtcCngEncoder*) cng_inst;
234 234
235 int16_t arCoefs[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 235 int16_t arCoefs[WEBRTC_CNG_MAX_LPC_ORDER + 1];
236 int32_t corrVector[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 236 int32_t corrVector[WEBRTC_CNG_MAX_LPC_ORDER + 1];
237 int16_t refCs[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 237 int16_t refCs[WEBRTC_CNG_MAX_LPC_ORDER + 1];
238 int16_t hanningW[WEBRTC_CNG_MAX_OUTSIZE_ORDER]; 238 int16_t hanningW[WEBRTC_CNG_MAX_OUTSIZE_ORDER];
239 int16_t ReflBeta = 19661; /* 0.6 in q15. */ 239 int16_t ReflBeta = 19661; /* 0.6 in q15. */
240 int16_t ReflBetaComp = 13107; /* 0.4 in q15. */ 240 int16_t ReflBetaComp = 13107; /* 0.4 in q15. */
241 int32_t outEnergy; 241 int32_t outEnergy;
242 int outShifts; 242 int outShifts;
243 int i, stab; 243 size_t i;
244 int stab;
244 int acorrScale; 245 int acorrScale;
245 int index; 246 size_t index;
246 int16_t ind, factor; 247 size_t ind, factor;
247 int32_t* bptr; 248 int32_t* bptr;
248 int32_t blo, bhi; 249 int32_t blo, bhi;
249 int16_t negate; 250 int16_t negate;
250 const int16_t* aptr; 251 const int16_t* aptr;
251 int16_t speechBuf[WEBRTC_CNG_MAX_OUTSIZE_ORDER]; 252 int16_t speechBuf[WEBRTC_CNG_MAX_OUTSIZE_ORDER];
252 253
253 /* Check if encoder initiated. */ 254 /* Check if encoder initiated. */
254 if (inst->initflag != 1) { 255 if (inst->initflag != 1) {
255 inst->errorcode = CNG_ENCODER_NOT_INITIATED; 256 inst->errorcode = CNG_ENCODER_NOT_INITIATED;
256 return -1; 257 return -1;
(...skipping 17 matching lines...) Expand all
274 /* We can only do 5 shifts without destroying accuracy in 275 /* We can only do 5 shifts without destroying accuracy in
275 * division factor. */ 276 * division factor. */
276 if (outShifts > 5) { 277 if (outShifts > 5) {
277 outEnergy <<= (outShifts - 5); 278 outEnergy <<= (outShifts - 5);
278 outShifts = 5; 279 outShifts = 5;
279 } else { 280 } else {
280 factor /= 2; 281 factor /= 2;
281 outShifts--; 282 outShifts--;
282 } 283 }
283 } 284 }
284 outEnergy = WebRtcSpl_DivW32W16(outEnergy, factor); 285 outEnergy = WebRtcSpl_DivW32W16(outEnergy, (int16_t)factor);
285 286
286 if (outEnergy > 1) { 287 if (outEnergy > 1) {
287 /* Create Hanning Window. */ 288 /* Create Hanning Window. */
288 WebRtcSpl_GetHanningWindow(hanningW, nrOfSamples / 2); 289 WebRtcSpl_GetHanningWindow(hanningW, nrOfSamples / 2);
289 for (i = 0; i < (nrOfSamples / 2); i++) 290 for (i = 0; i < (nrOfSamples / 2); i++)
290 hanningW[nrOfSamples - i - 1] = hanningW[i]; 291 hanningW[nrOfSamples - i - 1] = hanningW[i];
291 292
292 WebRtcSpl_ElementwiseVectorMult(speechBuf, hanningW, speechBuf, nrOfSamples, 293 WebRtcSpl_ElementwiseVectorMult(speechBuf, hanningW, speechBuf, nrOfSamples,
293 14); 294 14);
294 295
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 /* Q15 to Q7 with rounding. */ 384 /* Q15 to Q7 with rounding. */
384 SIDdata[i + 1] = (127 + ((inst->enc_reflCoefs[i] + 128) >> 8)); 385 SIDdata[i + 1] = (127 + ((inst->enc_reflCoefs[i] + 128) >> 8));
385 } 386 }
386 } 387 }
387 388
388 inst->enc_msSinceSID = 0; 389 inst->enc_msSinceSID = 0;
389 *bytesOut = inst->enc_nrOfCoefs + 1; 390 *bytesOut = inst->enc_nrOfCoefs + 1;
390 391
391 inst->enc_msSinceSID += 392 inst->enc_msSinceSID +=
392 (int16_t)((1000 * nrOfSamples) / inst->enc_sampfreq); 393 (int16_t)((1000 * nrOfSamples) / inst->enc_sampfreq);
393 return inst->enc_nrOfCoefs + 1; 394 return (int)(inst->enc_nrOfCoefs + 1);
394 } else { 395 } else {
395 inst->enc_msSinceSID += 396 inst->enc_msSinceSID +=
396 (int16_t)((1000 * nrOfSamples) / inst->enc_sampfreq); 397 (int16_t)((1000 * nrOfSamples) / inst->enc_sampfreq);
397 *bytesOut = 0; 398 *bytesOut = 0;
398 return 0; 399 return 0;
399 } 400 }
400 } 401 }
401 402
402 /**************************************************************************** 403 /****************************************************************************
403 * WebRtcCng_UpdateSid(...) 404 * WebRtcCng_UpdateSid(...)
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 * 469 *
469 * Input: 470 * Input:
470 * - cng_inst : Pointer to created instance that should be freed 471 * - cng_inst : Pointer to created instance that should be freed
471 * - outData : pointer to area to write CN data 472 * - outData : pointer to area to write CN data
472 * - nrOfSamples : How much data to generate 473 * - nrOfSamples : How much data to generate
473 * 474 *
474 * Return value : 0 - Ok 475 * Return value : 0 - Ok
475 * -1 - Error 476 * -1 - Error
476 */ 477 */
477 int16_t WebRtcCng_Generate(CNG_dec_inst* cng_inst, int16_t* outData, 478 int16_t WebRtcCng_Generate(CNG_dec_inst* cng_inst, int16_t* outData,
478 int16_t nrOfSamples, int16_t new_period) { 479 size_t nrOfSamples, int16_t new_period) {
479 WebRtcCngDecoder* inst = (WebRtcCngDecoder*) cng_inst; 480 WebRtcCngDecoder* inst = (WebRtcCngDecoder*) cng_inst;
480 481
481 int i; 482 size_t i;
482 int16_t excitation[WEBRTC_CNG_MAX_OUTSIZE_ORDER]; 483 int16_t excitation[WEBRTC_CNG_MAX_OUTSIZE_ORDER];
483 int16_t low[WEBRTC_CNG_MAX_OUTSIZE_ORDER]; 484 int16_t low[WEBRTC_CNG_MAX_OUTSIZE_ORDER];
484 int16_t lpPoly[WEBRTC_CNG_MAX_LPC_ORDER + 1]; 485 int16_t lpPoly[WEBRTC_CNG_MAX_LPC_ORDER + 1];
485 int16_t ReflBetaStd = 26214; /* 0.8 in q15. */ 486 int16_t ReflBetaStd = 26214; /* 0.8 in q15. */
486 int16_t ReflBetaCompStd = 6553; /* 0.2 in q15. */ 487 int16_t ReflBetaCompStd = 6553; /* 0.2 in q15. */
487 int16_t ReflBetaNewP = 19661; /* 0.6 in q15. */ 488 int16_t ReflBetaNewP = 19661; /* 0.6 in q15. */
488 int16_t ReflBetaCompNewP = 13107; /* 0.4 in q15. */ 489 int16_t ReflBetaCompNewP = 13107; /* 0.4 in q15. */
489 int16_t Beta, BetaC, tmp1, tmp2, tmp3; 490 int16_t Beta, BetaC, tmp1, tmp2, tmp3;
490 int32_t targetEnergy; 491 int32_t targetEnergy;
491 int16_t En; 492 int16_t En;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 /* Typecast pointer to real structure. */ 596 /* Typecast pointer to real structure. */
596 WebRtcCngEncoder* inst = (WebRtcCngEncoder*) cng_inst; 597 WebRtcCngEncoder* inst = (WebRtcCngEncoder*) cng_inst;
597 return inst->errorcode; 598 return inst->errorcode;
598 } 599 }
599 600
600 int16_t WebRtcCng_GetErrorCodeDec(CNG_dec_inst* cng_inst) { 601 int16_t WebRtcCng_GetErrorCodeDec(CNG_dec_inst* cng_inst) {
601 /* Typecast pointer to real structure. */ 602 /* Typecast pointer to real structure. */
602 WebRtcCngDecoder* inst = (WebRtcCngDecoder*) cng_inst; 603 WebRtcCngDecoder* inst = (WebRtcCngDecoder*) cng_inst;
603 return inst->errorcode; 604 return inst->errorcode;
604 } 605 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698