Using webrtcdsp echo cancellation on Android

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Using webrtcdsp echo cancellation on Android

Niels Avonds
Hi everyone,

I'm working on a project where we're using GStreamer to build an
Android WebRTC application. Currently, we're dealing with echo
problems. What is the recommended way to deal with these issues when
using GStreamer under Android?

I have tried using the webrtcdsp and webrtcechoprobe elements, but
that hasn't been successful. I'm able to make those elements work on
my pc, but not on Android. I've tried the following simple pipeline
(adjusted for Android from the example pipeline given in the webrtcdsp
documentation):

openslessrc ! webrtcdsp ! webrtcechoprobe ! openslessink sync=true

This doesn't cancel the echo, while a similar pipeline on the pc is
working perfectly:

pulsesrc ! webrtcdsp ! webrtcechoprobe ! pulsesink sync=true

I've noticed that the buffer length for opensles is 20ms by default.
Could this be the issue?

Thanks in advance!
Best regards,
Niels Avonds
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using webrtcdsp echo cancellation on Android

Nicolas Dufresne-5


Le mar. 2 oct. 2018 04 h 42, Niels Avonds <[hidden email]> a écrit :
Hi everyone,

I'm working on a project where we're using GStreamer to build an
Android WebRTC application. Currently, we're dealing with echo
problems. What is the recommended way to deal with these issues when
using GStreamer under Android?

I have tried using the webrtcdsp and webrtcechoprobe elements, but
that hasn't been successful. I'm able to make those elements work on
my pc, but not on Android. I've tried the following simple pipeline
(adjusted for Android from the example pipeline given in the webrtcdsp
documentation):

openslessrc ! webrtcdsp ! webrtcechoprobe ! openslessink sync=true

This doesn't cancel the echo, while a similar pipeline on the pc is
working perfectly:

pulsesrc ! webrtcdsp ! webrtcechoprobe ! pulsesink sync=true

I've noticed that the buffer length for opensles is 20ms by default.
Could this be the issue?

20ms should not be an issue. Webrtcdsp will cut it in half. Most of the time it is the latency that is too high, or wrongly reported. Reducing the latency will reduce the error margin. Try refusing buffer-time property on openslessink to some small multiple of "latency" property. So let say you chose 20ms latency, then try buffer-time at 60 or 80ms. If I remember, the total pipeline latency should not exceed 200ms.


Thanks in advance!
Best regards,
Niels Avonds
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel