正确使用WebRtcAecm函数的方法

时间:2013-10-30 09:29:37

标签: android webrtc aec

我试图了解如何正确使用两个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);

在互联网上的代码片段中,我看到同一个指针被用于nearendNoisy和nearendClean。如果我们不进行任何噪声抑制,nearendClean参数是否应为null?

最后,在两个不同的线程中调用这两个方法有什么问题吗?我们的远程音频接收器代码在一个线程中,我们的麦克风监听器代码在另一个线程中。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我在github上发布了一个project,它会告诉你如何调用这些函数。

确实可以将

nearendClean 设置为NULL,并且我总是将其设置为NULL,cus'我的NS是在AECM游行之后。

Holp我帮助过了:)。