Recent Developments in the PulseAudio World

Arun Raghavan 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!