This reverts commit b46c4bf27ba5c417fcba7f200d80fa4634e7e1a1. Reason for revert: breaks a downstream project Original change's description: > [ACM] iSAC audio codec removed > > Note: this CL has to leave behind one part of iSAC, which is its VAD > currently used by AGC1 in APM. The target visibility has been > restricted and the VAD will be removed together with AGC1 when the > time comes. > > Tested: see https://chromium-review.googlesource.com/c/chromium/src/+/4013319 > > Bug: webrtc:14450 > Change-Id: I69cc518b16280eae62a1f1977cdbfa24c08cf5f9 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282421 > Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org> > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > Reviewed-by: Henrik Boström <hbos@webrtc.org> > Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#38652} Bug: webrtc:14450 Change-Id: Ice138004e84e8c5f896684e8d01133d4b2a77bb7 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283800 Reviewed-by: Alessio Bazzica <alessiob@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Auto-Submit: Alessio Bazzica <alessiob@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Owners-Override: Mirko Bonadei <mbonadei@webrtc.org> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#38655}
174 lines
3.9 KiB
C
174 lines
3.9 KiB
C
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
/*
|
|
* initialize.c
|
|
*
|
|
* Internal initfunctions
|
|
*
|
|
*/
|
|
|
|
#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
|
|
#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
|
|
#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
|
|
|
|
|
|
void WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc *maskdata) {
|
|
|
|
int k;
|
|
|
|
for (k = 0; k < WINLEN; k++) {
|
|
maskdata->DataBufferLoQ0[k] = (int16_t) 0;
|
|
maskdata->DataBufferHiQ0[k] = (int16_t) 0;
|
|
}
|
|
for (k = 0; k < ORDERLO+1; k++) {
|
|
maskdata->CorrBufLoQQ[k] = (int32_t) 0;
|
|
maskdata->CorrBufLoQdom[k] = 0;
|
|
|
|
maskdata->PreStateLoGQ15[k] = 0;
|
|
|
|
}
|
|
for (k = 0; k < ORDERHI+1; k++) {
|
|
maskdata->CorrBufHiQQ[k] = (int32_t) 0;
|
|
maskdata->CorrBufHiQdom[k] = 0;
|
|
maskdata->PreStateHiGQ15[k] = 0;
|
|
}
|
|
|
|
maskdata->OldEnergy = 10;
|
|
|
|
return;
|
|
}
|
|
|
|
void WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec *maskdata) {
|
|
|
|
int k;
|
|
|
|
for (k = 0; k < ORDERLO+1; k++)
|
|
{
|
|
maskdata->PostStateLoGQ0[k] = 0;
|
|
}
|
|
for (k = 0; k < ORDERHI+1; k++)
|
|
{
|
|
maskdata->PostStateHiGQ0[k] = 0;
|
|
}
|
|
|
|
maskdata->OldEnergy = 10;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr *prefiltdata)
|
|
{
|
|
int k;
|
|
|
|
for (k = 0; k < QLOOKAHEAD; k++) {
|
|
prefiltdata->INLABUF1_fix[k] = 0;
|
|
prefiltdata->INLABUF2_fix[k] = 0;
|
|
}
|
|
for (k = 0; k < 2 * (QORDER - 1); k++) {
|
|
prefiltdata->INSTAT1_fix[k] = 0;
|
|
prefiltdata->INSTAT2_fix[k] = 0;
|
|
}
|
|
|
|
/* High pass filter states */
|
|
prefiltdata->HPstates_fix[0] = 0;
|
|
prefiltdata->HPstates_fix[1] = 0;
|
|
|
|
return;
|
|
}
|
|
|
|
void WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr *postfiltdata)
|
|
{
|
|
int k;
|
|
|
|
for (k = 0; k < 2 * POSTQORDER; k++) {
|
|
postfiltdata->STATE_0_LOWER_fix[k] = 0;
|
|
postfiltdata->STATE_0_UPPER_fix[k] = 0;
|
|
}
|
|
|
|
/* High pass filter states */
|
|
|
|
postfiltdata->HPstates1_fix[0] = 0;
|
|
postfiltdata->HPstates1_fix[1] = 0;
|
|
|
|
postfiltdata->HPstates2_fix[0] = 0;
|
|
postfiltdata->HPstates2_fix[1] = 0;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void WebRtcIsacfix_InitPitchFilter(PitchFiltstr *pitchfiltdata)
|
|
{
|
|
int k;
|
|
|
|
for (k = 0; k < PITCH_BUFFSIZE; k++)
|
|
pitchfiltdata->ubufQQ[k] = 0;
|
|
for (k = 0; k < (PITCH_DAMPORDER); k++)
|
|
pitchfiltdata->ystateQQ[k] = 0;
|
|
|
|
pitchfiltdata->oldlagQ7 = 6400; /* 50.0 in Q7 */
|
|
pitchfiltdata->oldgainQ12 = 0;
|
|
}
|
|
|
|
void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct *State)
|
|
{
|
|
int k;
|
|
|
|
for (k = 0; k < PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2; k++) {
|
|
State->dec_buffer16[k] = 0;
|
|
}
|
|
for (k = 0; k < 2 * ALLPASSSECTIONS + 1; k++) {
|
|
State->decimator_state32[k] = 0;
|
|
}
|
|
|
|
for (k = 0; k < QLOOKAHEAD; k++)
|
|
State->inbuf[k] = 0;
|
|
|
|
WebRtcIsacfix_InitPitchFilter(&(State->PFstr_wght));
|
|
|
|
WebRtcIsacfix_InitPitchFilter(&(State->PFstr));
|
|
}
|
|
|
|
|
|
void WebRtcIsacfix_InitPlc( PLCstr *State )
|
|
{
|
|
State->decayCoeffPriodic = WEBRTC_SPL_WORD16_MAX;
|
|
State->decayCoeffNoise = WEBRTC_SPL_WORD16_MAX;
|
|
|
|
State->used = PLC_WAS_USED;
|
|
|
|
WebRtcSpl_ZerosArrayW16(State->overlapLP, RECOVERY_OVERLAP);
|
|
WebRtcSpl_ZerosArrayW16(State->lofilt_coefQ15, ORDERLO);
|
|
WebRtcSpl_ZerosArrayW16(State->hifilt_coefQ15, ORDERHI );
|
|
|
|
State->AvgPitchGain_Q12 = 0;
|
|
State->lastPitchGain_Q12 = 0;
|
|
State->lastPitchLag_Q7 = 0;
|
|
State->gain_lo_hiQ17[0]=State->gain_lo_hiQ17[1] = 0;
|
|
WebRtcSpl_ZerosArrayW16(State->prevPitchInvIn, FRAMESAMPLES/2);
|
|
WebRtcSpl_ZerosArrayW16(State->prevPitchInvOut, PITCH_MAX_LAG + 10 );
|
|
WebRtcSpl_ZerosArrayW32(State->prevHP, PITCH_MAX_LAG + 10 );
|
|
State->pitchCycles = 0;
|
|
State->A = 0;
|
|
State->B = 0;
|
|
State->pitchIndex = 0;
|
|
State->stretchLag = 240;
|
|
State->seed = 4447;
|
|
|
|
|
|
}
|