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
to handle format changes pulseaudiosink is a new bin
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!
Recommend
More recommend