I already tested using Android AudioTrack as an alternative to openSLES (test case #2 in my previous message). Isn't that what you mean by the 'JNI implementation' ? I can disable openSLES by building webrtc with GYP_DEFINES = "enable_android_opensl=0".
That doesn't make AEC work better in our device.
Here is a plot based on the debug recording. This recording is made with the below settings:
- android2android video&audio call
- using webrtc r7370.
- openSLES enabled with increased kNum10MsToBuffer (defined in opensles_input.h)
- AEC with conference mode, noise suppression, and highpass filter.
The wave-forms clearly shows huge feedback loop (very load 'beep' sound) happening between seconds: 10-17, 20-30, 45-55, 80-95, 125-135, 145-155. Overall 'beep' sound exists in the background unless you have a very low volume level.
Based on the wave-forms, do you think 'too long delay' is a strong reason for AEC having no effect?
Is there anything else that I can provide to help inspect the issue further?