| OLD | NEW |
| 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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 | 276 |
| 277 // initialize VADs | 277 // initialize VADs |
| 278 WebRtcAgc_InitVad(&stt->vadNearend); | 278 WebRtcAgc_InitVad(&stt->vadNearend); |
| 279 WebRtcAgc_InitVad(&stt->vadFarend); | 279 WebRtcAgc_InitVad(&stt->vadFarend); |
| 280 | 280 |
| 281 return 0; | 281 return 0; |
| 282 } | 282 } |
| 283 | 283 |
| 284 int32_t WebRtcAgc_AddFarendToDigital(DigitalAgc* stt, | 284 int32_t WebRtcAgc_AddFarendToDigital(DigitalAgc* stt, |
| 285 const int16_t* in_far, | 285 const int16_t* in_far, |
| 286 int16_t nrSamples) { | 286 size_t nrSamples) { |
| 287 assert(stt != NULL); | 287 assert(stt != NULL); |
| 288 // VAD for far end | 288 // VAD for far end |
| 289 WebRtcAgc_ProcessVad(&stt->vadFarend, in_far, nrSamples); | 289 WebRtcAgc_ProcessVad(&stt->vadFarend, in_far, nrSamples); |
| 290 | 290 |
| 291 return 0; | 291 return 0; |
| 292 } | 292 } |
| 293 | 293 |
| 294 int32_t WebRtcAgc_ProcessDigital(DigitalAgc* stt, | 294 int32_t WebRtcAgc_ProcessDigital(DigitalAgc* stt, |
| 295 const int16_t* const* in_near, | 295 const int16_t* const* in_near, |
| 296 int16_t num_bands, | 296 size_t num_bands, |
| 297 int16_t* const* out, | 297 int16_t* const* out, |
| 298 uint32_t FS, | 298 uint32_t FS, |
| 299 int16_t lowlevelSignal) { | 299 int16_t lowlevelSignal) { |
| 300 // array for gains (one value per ms, incl start & end) | 300 // array for gains (one value per ms, incl start & end) |
| 301 int32_t gains[11]; | 301 int32_t gains[11]; |
| 302 | 302 |
| 303 int32_t out_tmp, tmp32; | 303 int32_t out_tmp, tmp32; |
| 304 int32_t env[10]; | 304 int32_t env[10]; |
| 305 int32_t max_nrg; | 305 int32_t max_nrg; |
| 306 int32_t cur_level; | 306 int32_t cur_level; |
| 307 int32_t gain32, delta; | 307 int32_t gain32, delta; |
| 308 int16_t logratio; | 308 int16_t logratio; |
| 309 int16_t lower_thr, upper_thr; | 309 int16_t lower_thr, upper_thr; |
| 310 int16_t zeros = 0, zeros_fast, frac = 0; | 310 int16_t zeros = 0, zeros_fast, frac = 0; |
| 311 int16_t decay; | 311 int16_t decay; |
| 312 int16_t gate, gain_adj; | 312 int16_t gate, gain_adj; |
| 313 int16_t k, n, i; | 313 int16_t k; |
| 314 int16_t L, L2; // samples/subframe | 314 size_t n, i, L; |
| 315 int16_t L2; // samples/subframe |
| 315 | 316 |
| 316 // determine number of samples per ms | 317 // determine number of samples per ms |
| 317 if (FS == 8000) | 318 if (FS == 8000) |
| 318 { | 319 { |
| 319 L = 8; | 320 L = 8; |
| 320 L2 = 3; | 321 L2 = 3; |
| 321 } else if (FS == 16000 || FS == 32000 || FS == 48000) | 322 } else if (FS == 16000 || FS == 32000 || FS == 48000) |
| 322 { | 323 { |
| 323 L = 16; | 324 L = 16; |
| 324 L2 = 4; | 325 L2 = 4; |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 state->counter = 3; // counts updates | 626 state->counter = 3; // counts updates |
| 626 for (k = 0; k < 8; k++) | 627 for (k = 0; k < 8; k++) |
| 627 { | 628 { |
| 628 // downsampling filter | 629 // downsampling filter |
| 629 state->downState[k] = 0; | 630 state->downState[k] = 0; |
| 630 } | 631 } |
| 631 } | 632 } |
| 632 | 633 |
| 633 int16_t WebRtcAgc_ProcessVad(AgcVad* state, // (i) VAD state | 634 int16_t WebRtcAgc_ProcessVad(AgcVad* state, // (i) VAD state |
| 634 const int16_t* in, // (i) Speech signal | 635 const int16_t* in, // (i) Speech signal |
| 635 int16_t nrSamples) // (i) number of samples | 636 size_t nrSamples) // (i) number of samples |
| 636 { | 637 { |
| 637 int32_t out, nrg, tmp32, tmp32b; | 638 int32_t out, nrg, tmp32, tmp32b; |
| 638 uint16_t tmpU16; | 639 uint16_t tmpU16; |
| 639 int16_t k, subfr, tmp16; | 640 int16_t k, subfr, tmp16; |
| 640 int16_t buf1[8]; | 641 int16_t buf1[8]; |
| 641 int16_t buf2[4]; | 642 int16_t buf2[4]; |
| 642 int16_t HPstate; | 643 int16_t HPstate; |
| 643 int16_t zeros, dB; | 644 int16_t zeros, dB; |
| 644 | 645 |
| 645 // process in 10 sub frames of 1 ms (to save on memory) | 646 // process in 10 sub frames of 1 ms (to save on memory) |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 762 { | 763 { |
| 763 state->logRatio = 2048; | 764 state->logRatio = 2048; |
| 764 } | 765 } |
| 765 if (state->logRatio < -2048) | 766 if (state->logRatio < -2048) |
| 766 { | 767 { |
| 767 state->logRatio = -2048; | 768 state->logRatio = -2048; |
| 768 } | 769 } |
| 769 | 770 |
| 770 return state->logRatio; // Q10 | 771 return state->logRatio; // Q10 |
| 771 } | 772 } |
| OLD | NEW |