Recent Developments in the PulseAudio World
Arun Raghavan Collabora Feature-rich audio server
Convenient client API Some rough bumps early on Lots of FUD afterwards More and more people love us Okay, fine More and more people don't hate us Ubuntu, Fedora, OpenSUSE
GNOME, maybe even KDE one day
Wine(!) The People Colin Guthrie: maintainer; *
Arun Raghavan: committer; *
Tanu Kaskinen: committer-in-waiting; ALSA, misc
David Henningson: ALSA, misc
Maarten Bosmans: RTP, Win32, build, more
Pierre-Louis Bossart: Power, performance, misc
Lots of others
So we're alive and kicking We did a 1.0 release It took 2½ years But it's awesome ;) DBus protocol
Source-ouput volumes
Echo cancellation
Windows, OS X ports
Equalizer
RTP improvements
Passthrough
Deferred volumes
Optimisations And there's more to come ... Jack detection
ALSA UCM
Dynamic sample rate changes
WebRTC echo canceller
Drift compensation, AGC
Module loader
Configuration API
Moar Orc
Fixed rate resamplers Exciting times ahead ... A little more about passthrough Problem: we'd like to use hardware audio decoders Challenge: PulseAudio needs fixed bytes-to-ms conversion Solution: Support only fixed bytes-to-ms conversion (IEC 61937) Format negotiation
╭──────╮ ╭──────╮ │client│ ──▷ requested formats ──▷ │server│ ╰──────╯ ╰──────╯
╭──────╮ ╭──────╮ │client│ ◁── selected format ◁── │server│ ╰──────╯ ╰──────╯ Notification on format change Changes to GStreamer baseaudiosink does payloading
IEC 61937 payloading in pbutils playbin2/playsink understands compressed sinks
(go slomo!) pulsesink now does AC3/DTS/MP3 pulseaudiosink is a new bin to handle format changes AC3 sink
╭───────────────playbin2────────────────╮ │ │ │ ╭─pulseaudiosink─╮ │ │ ╭────────╮ │ ╭─────────╮ │ │ │ ...──▷│ac3parse│──▷│──▷│pulsesink│ │ │ │ ╰────────╯ │ ╰─────────╯ │ │ │ ╰────────────────╯ │ │ │ ╰───────────────────────────────────────╯ PCM sink
╭───────────────────────playbin2───────────────────────╮ │ │ │ ╭────────pulseaudiosink────────╮ │ │ ╭────────╮ │ ╭──────────╮ ╭─────────╮ │ │ │ ...──▷│ac3parse│──▷│──▷│decodebin2│──▷│pulsesink│ │ │ │ ╰────────╯ │ ╰──────────╯ ╰─────────╯ │ │ │ ╰──────────────────────────────╯ │ │ │ ╰──────────────────────────────────────────────────────╯ All this will be in the next gst-plugins-good (0.10.31) GStreamer 1.0 will provide better upstream renegotiation But we finally closed bug 331875 (took only 5 years :p) Questions? Thank you!