Hi, I am developing a gstreamer VOIP application for Android with the requirement to
a) switch between internal and external speakers
b) using (ideally) the Android provided echo cancellation when using the external speakers
unfortunately I seem to have opened a can of worms, in particular with respect to the android EchoCancellation issue. (I managed to solve that particular problem by compiling my own libOpenSLES and incorporating a few lines of code from later android versions).
The basic problem:
Android Platform 14 doesn't exposes the android echo cancellation feature in its opensles implementation (libOpenSLES which is required for android gstreamer builds). Btw, it also doesn't expose the AudioManager's session ID - which would be sufficient to create echo-cancellation through passing it on to java code.
Later android platforms allow that (I dont know when it happened but 21 should work) - there, android opensles has a feature to enable echo cancellation. I have seen no documentation but discovered a property somewhere in the android opensles sources, which does not exist in platform 14.
My attempt for a solution - using a higher APP_PLATFORM than 14:
1) compile existing gstreamer-sdk with APP_PLATFORM := android-21
that fails. The gstreamer-sdk code is not compatible.
2) create a new gstreamer-sdk (cerbero) with updated glib, pixman, and other libraries and new android-ndk...
That task was beyond me. I tried to simply update the version numbers in the .recipie files but the code is partially pulled from the gstreamer-sdk git for several libraries, (e.g. pixman) where the newer versions do not exist. I couldn't yet figure out howto change the recipies to pull the source code from the official repositories...
I am confused and not sure how to best solve the problem... Any help about the strategy or pointer in the right direction is appreciated
|
Le jeudi 03 novembre 2016 à 04:44 -0700, WS a écrit :
> Hi, I am developing a gstreamer VOIP application for Android with the > requirement to a) switch between internal and external speakers b) > using (ideally) the Android provided echo cancellation when using the > external speakers unfortunately I seem to have opened a can of worms, > in particular with respect to the android EchoCancellation issue. (I > managed to solve that particular problem by compiling my own > libOpenSLES and incorporating a few lines of code from later android > versions). The basic problem: Android Platform 14 doesn't exposes the > android echo cancellation feature in its opensles implementation > (libOpenSLES which is required for android gstreamer builds). Btw, it > also doesn't expose the AudioManager's session ID - which would be > sufficient to create echo-cancellation through passing it on to java > code. Later android platforms allow that (I dont know when it > happened but 21 should work) - there, android opensles has a feature > to enable echo cancellation. I have seen no documentation but > discovered a property somewhere in the android opensles sources, > which does not exist in platform 14. My attempt for a solution - > using a higher APP_PLATFORM than 14: 1) compile existing gstreamer- > sdk with APP_PLATFORM := android-21 that fails. The gstreamer-sdk > code is not compatible. 2) create a new gstreamer-sdk (cerbero) with > updated glib, pixman, and other libraries and new android-ndk... That > task was beyond me. I tried to simply update the version numbers in > the .recipie files but the code is partially pulled from the > gstreamer-sdk git for several libraries, (e.g. pixman) where the > newer versions do not exist. I couldn't yet figure out howto change > the recipies to pull the source code from the official > repositories... I am confused and not sure how to best solve the > problem... Any help about the strategy or pointer in the right > direction is appreciated One solution here would be to move to GStreamer 1.10, and use the new GStreamer echo cancellation elements. This way you will no longer depend on the platform. Obviously, it means you'll do cancellation in software always and not let the OS decided between using HW or SW. See: https://ndufresne.ca/2016/06/gstreamer-echo-canceller/ regards, Nicolas _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |