[pulseaudio-discuss] Updating the WebRTC AudioProcessing library
Tanu Kaskinen
tanuk at iki.fi
Tue Apr 10 12:26:55 UTC 2018
On Mon, 2018-04-09 at 11:56 +0200, Tomaž Šolc wrote:
> Dear Tanu,
>
> thanks for your comments. My answers to individual questions are in-line
> below.
>
> In general I think there's a question of how heavy a wrapper the
> "module-echo-cancellation" is supposed to be around the webrtc code. The
> upstream is very actively reworking large parts of the code. Most
> likely closely following the changes and ensuring backwards
> compatibility in PulseAudio, even at the level of module arguments,
> isn't feasible in the long term.
When there's a pressing need to break compatibility, then that can be
done, but not otherwise.
> On 01. 04. 2018 12:42, Tanu Kaskinen wrote:
> > You removed the "trace" module argument, which can break previously-
> > working configuration files. Since you added the logging support
> > back in a different way, the "trace" module argument doesn't really
> > need to be removed, since it could still control whether the logging
> > should be enabled or not.
>
> The whole "trace" functionality has been removed upstream. I think
> retaining that parameter isn't useful and using it for something else is
> confusing. As far as I can see, its existence wasn't even documented
> anywhere.
It's not clear to me that "tracing" and "logging" are different
concepts in this case. If they are, then removing the "trace" modarg is
fine (though adding a warning that it's ignored would be better).
The lack of documentation is a valid point. Generally I'm of the
opinion is that if some API isn't documented, it shouldn't be used. In
module-echo-cancel's case that would mean most of the webrtc options
shouldn't be used, which of course isn't a good...
> > The previous logging code had separation for different log levels,
> > now only pa_log() is used (which is an alias for pa_log_error()).
> > Does webrtc not provide any more log level separation? The logging
> > is setup with this call:
> >
> > rtc::LogMessage::AddLogToStream(logsink, rtc::LS_INFO);
> >
> > Is LS_INFO the webrtc log level? If so, then it looks like all other
> > log levels than "info" are discarded.
>
> Unfortunately, the only way webrtc provides for plugging into its
> logging system is via the generic LogSink class, which doesn't receive
> the numeric log level. You can only set the minimum level for the
> messages that it receives. So at best, all webrtc log levels must be
> squashed into a single pa_log level (I've changed that to pa_log_info() now)
>
> I've now added a "log_level" argument that allows you to set the minimum
> webrtc level that is logged by PA:
>
> https://github.com/avian2/pulseaudio/commit/d97eb2122e9e5f1b251e97661b1b241b959c7b7c
>
> Anyway, upstream webrtc logging doesn't seem very useful at the moment.
> Even at highest verbosity only a few messages are generated on module
> load (which is why I originally didn't bother too much with it).
>
> I: webrtc: (audio_processing_impl.cc:441): Capture post processor
> activated: 0
> I: Render pre processor activated: 0
> I: webrtc: (audio_processing_impl.cc:704): Highpass filter activated: 0
> I: webrtc: (audio_processing_impl.cc:717): Gain Controller 2 activated: 0
>
> > You removed DEFAULT_HIGH_PASS_FILTER, which I think is not a good
> > change. It's good to be able to control the defaults in pulseaudio.
>
> I removed this default because the new webrtc configuration class seems
> to define some sensible defaults itself. Individual components no longer
> need to be explicitly enabled/disabled like before.
>
> I think upstream has a much better knowledge of which defaults make
> sense. For example, high pass filter is disabled by default in the
> current upstream (while DEFAULT_HIGH_PASS_FILTER was set to true).
Shouldn't we then remove all the other defaults as well?
--
Tanu
https://liberapay.com/tanuk
https://www.patreon.com/tanuk
More information about the pulseaudio-discuss
mailing list