我试图了解如何正确使用两个WebRtcAecm函数。似乎有两个主要功能可用于移动设备上的回声消除。
第一个是WebRtcAecm_BufferFarend
:
int32_t WebRtcAecm_BufferFarend(void* aecmInst,
const int16_t* farend,
int16_t nrOfSamples);
我想这就是我们传递从远端接收到的音频数据的地方。当我们继续接收音频数据包时,是否继续调用此方法?此外,该函数是否复制传入缓冲区的副本,以便我们可以将相同的缓冲区重用于下一个数据包?
另一个功能是WebRtcAecm_Process
:
int32_t WebRtcAecm_Process(void* aecmInst,
const int16_t* nearendNoisy,
const int16_t* nearendClean,
int16_t* out,
int16_t nrOfSamples,
int16_t msInSndCardBuf);
在Internet上的一个代码段中,我看到了将相同的指针用于nearendNoisy和nearendClean。如果我们不进行任何噪声抑制,nearendClean参数是否不应该为null?
最后,在两个不同的线程中调用这两个方法有什么问题吗?我们的远程音频接收器代码在一个线程中,而我们的麦克风侦听器代码在另一个线程中。
预先感谢您的帮助。
我已经在github上发布了一个项目,它将确切地向您展示如何调用这些函数。
实际上,nearendClean可以设置为NULL,我总是将其设置为NULL,因为我的NS在AECM游行之后。
霍尔普,我帮助了:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句