Hello people, i'm working with WebRTC in a custom C++ project to test AEC capabilities, and i have problem with a particular setup : using echo cancellation with wireless headset.
I would like to discuss with you all about that, if somebody is willing to help me :)
Here is the issue i created on the bug tracker to precise what i'm doing, how and my different tests :
***
What steps will reproduce the problem?
1. Setup a wireless device (speaker and/or microphone) on your computer
2. Make a project to use AudioProcessing class (and his EchoCancellation capability)
===
3.(Case 1) AudioProcessing class initialized with webrtc::Config setted with :
- new EchoCanceller3(true)
- new DelayAgnostic(true)
Delay are given to echo_cancellation component (apm->set_stream_delay_ms()), calculated with soundcard stream position (work with wired headset)
// OR
3.(Case 2) AudioProcessing class initialized with webrtc::Config setted with :
- new EchoCanceller3(true)
- new DelayAgnostic(false)
Delay are given to echo_cancellation component (apm->set_stream_delay_ms()), calculated with soundcard stream position (work with wired headset)
===
4. AEC level is set to High and is enabled
5. Try to provoke echo, and check if echo cancelation is cancelling echo.
What is the expected result?
> There is no echo in output of AudioProcessing module.
What do you see instead?
> There is still echo, less than no processing, but still some (enough to disturb)
> Most common behavior is that for 2/3 secondes, echo is partially cancelled, after 5 seconds, there is no echo cancellation at all.
What version of the product are you using? On what operating system?
> WebRTC git clone, builded with "b1963b403f8e9258c35a02d2622da254cbb90c51" revision, used in custom project
> Windows 10 x64
> Wireless Headset : Asus HS-W1
***
I'm aware that wireless headset include more latency in the delay given to echo_cancellation module, and it should be calculated when i'm not using DelayAgnostic configuration (but i don't know how, and i'm not sure it's even possible, ideas ?).
But DelayAgnostic configuration should predict delay for what i understood, even with a wireless headset, but it's not.
I also tried without new EchoCanceller3(true), same result. I can only make it work correctly with wired headsets (through calculated latency).
Is WebRTC AEC is even designed to work with wireless headset ?
Thanks for your time !