arun.raghavan at collabora.co.uk
Fri Aug 26 01:26:38 PDT 2011
Now that I have your attention ... :)
As some of you may have seen on IRC, I've been trying to rip out the
echo-cancellation and related bits from the GIPS code that Google put
out under the WebRTC project. The basic stuff is working quite well, and
there are lots of handy knobs for us to play with. Most interesting
among these are the ones that allow analog gain control and APIs to
handle drift between source and sink (which will give us the ability to
handle echo between say a webcam mic and internal speakers -- something
that we can't handle currently).
And as you might have guessed by now, the problem is that the WebRTC
code is all C++. It's not very C++-y really (it's even built with
-fno-rtti), and fairly straight-forward to use.
I was originally thinking of pulling this code into our tree, but
there's quite a bit of it, and Colin and I both think it makes sense to
package the WebRTC audio processing bits separately. That said, I'd
still prefer to just use the code as-is instead of maintaining a C
wrapper library around it.
This means a conditional build-time dependency on the C++ compiler and
libstdc++ for module-echo-cancel (conditional depending on whether you
want the WebRTC bits or not). The impact on other code is mainly the
addition of PA_C_DECL_BEGIN/END in various headers that didn't
previously care about being included in C++ code.
IMO this shouldn't affect people who really care about not having C++ as
a dep, and gives us the potential to use some nifty features in the
WebRTC code. Given this, does anyone have any objections?
More information about the pulseaudio-discuss