PipeWire in the Automotive Industry (George Kiagiadakis)[FOSDEM 2020]

Audio in automotive applications is complex, perhaps too complex to solve with PulseAudio.

When you talk about Audio in Linux generally the conversation about is about PulseAudio. [Kiagiadakis] works in the automotive sector and the situation there is quite different from Desktop Linux. On a desktop system there is typically a single CPU and a single sound card. In cars there are multiple CPUs and multiple sound cards, possibly also with hardware DSP functions and microphone arrays interspersed.

The audio situation in Automotive is way more complex than on the desktop. Some audio streams might even completely bypass the CPU but still need to be controlled by said CPU. There are also special requirements w.r.t. to emergency signals that need to have priority over other audio signals. In this case the in-vehicle-infotainment unit is not involved but still needs to be notified.

Part of the complexity in automotive audio is due to the need for security, routing & policy management. This is where PulseAudio falls short. This is where PipeWire comes in.

The PipeWire daemon is implemented as a graph that allows you to connect sources, sinks and processing blocks together. Initially this was intended for video, with audio added at a later stage.

It comes with built-in security and optionally supports low-latency use cases. It alsow allows for external session management which is what is of interest for the issues mentioned earlier.

[Kiagiadakis] implemented a session management tool called WirePlumber which handles the policy management. Given that in PipeWire the graph can be complex and this complexity gets in the way of implementing a clear Policy he created a simplified graph of the Endpoints. This is comparable to the graph of the audio system as represented by PulseAudio which is composed of only sources and sinks.

There is an initial implementation in Automotive Grade Linux. Future work includes making it a drop-in replacement for Pulseaudio, handling policy for video nodes and security management.