Я работаю с собственным API AEC WebRtc.
int32_t WebRtcAec_Process(void* aecInst, const float* const* nearend,
size_t num_bands, float* const* out,
size_t nrOfSamples, int16_t msInSndCardBuf,
int32_t skew);
Я хочу отменить эхо от аудио с частотой дискретизации 48K, одноканальным (моно) с AEC.
Но я не знаю, зачемnum_bands
нужно. Если я дам значение 1
для num_bands
, я получу фатальную ошибку (ошибка утверждения) внутри AEC (сбой RTC_DCHECK_EQ(aec->num_bands, num_bands);
).
Я проверил предварительно рассчитанное значение aec->num_bands
, которое равно 3
для 48K. Из aec_core.cc
:
if (sampFreq == 8000) {
aec->num_bands = 1;
} else {
aec->num_bands = (size_t)(sampFreq / 16000);
}
Даже если я использую 3 для num_bands
, я получаю сбой из-за недопустимого доступа. Нужно ли каким-то образом разделить каждый кадр на 3 части?