State of Audio in 2009 Linux Plumbers Conference 2009

Lennart Poettering [email protected]

September 2009

Lennart Poettering State of Linux Audio in 2009 Who Am I?

Software Engineer at , Inc. Developer of PulseAudio, and a few other projects http://0pointer.de/lennart/ [email protected] IRC: mezcalero

Lennart Poettering State of Linux Audio in 2009 Perspective

Lennart Poettering State of Linux Audio in 2009 So, what happened since last LPC?

Lennart Poettering State of Linux Audio in 2009 RIP: EsounD is officially gone.

Lennart Poettering State of Linux Audio in 2009 (at least on Fedora)

RIP: OSS is officially gone.

Lennart Poettering State of Linux Audio in 2009 RIP: OSS is officially gone. (at least on Fedora)

Lennart Poettering State of Linux Audio in 2009 Audio API Guide http://0pointer.de/blog/projects/guide-to-sound-apis

Lennart Poettering State of Linux Audio in 2009 We also make use of high-resolution timers on the desktop by default.

We now use realtime scheduling on the desktop by default.

Lennart Poettering State of Linux Audio in 2009 We now use realtime scheduling on the desktop by default. We also make use of high-resolution timers on the desktop by default.

Lennart Poettering State of Linux Audio in 2009 2s Buffers

Lennart Poettering State of Linux Audio in 2009 Mixer abstraction? Due to user-friendliness, i18n, meta data (icons, ...)

We moved a couple of things into the audio server: Timer-based audio scheduling; mixing; flat volume/volume range and granularity extension; integration of volume sliders; mixer abstraction; monitoring

Lennart Poettering State of Linux Audio in 2009 We moved a couple of things into the audio server: Timer-based audio scheduling; mixing; flat volume/volume range and granularity extension; integration of volume sliders; mixer abstraction; monitoring Mixer abstraction? Due to user-friendliness, i18n, meta data (icons, ...)

Lennart Poettering State of Linux Audio in 2009 integration: meta data, by-path/by-id/...

Lennart Poettering State of Linux Audio in 2009 Bluetooth Audio, A2DP, HSP/HFP, Lip-Sync!

Lennart Poettering State of Linux Audio in 2009 ALSA mixer initialization database

Lennart Poettering State of Linux Audio in 2009 Other: Drivers for X-Fi, LSB work

Lennart Poettering State of Linux Audio in 2009 What are the challenges to tackle until next LPC?

Lennart Poettering State of Linux Audio in 2009 Drivers: Power saving distortions

Lennart Poettering State of Linux Audio in 2009 Drivers: Incorrect dB information

Lennart Poettering State of Linux Audio in 2009 Drivers: Wrong mixer element names

Lennart Poettering State of Linux Audio in 2009 Drivers: Missing/broken device strings

Lennart Poettering State of Linux Audio in 2009 Drivers: Non-standard negotiation logic

Lennart Poettering State of Linux Audio in 2009 Drivers: Missing from mixer initialization database

Lennart Poettering State of Linux Audio in 2009 Drivers: Broken timing snd pcm delay(), snd pcm avail()

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Multi-PCM clock synchronization

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Routing/PCM-to-mixer-element mapping/auto discovery Current system depends on assumptions made based on consumer hardware, which doesn’t scale to professional and embedded hardware

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Jack sensing, labelling, colouring, matching Mixed HW/SW switching

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Timing/data transfer granularity

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Channel mapping, current system does not scale

Lennart Poettering State of Linux Audio in 2009 ALSA API addition: Latency control, Hifi DSP

Lennart Poettering State of Linux Audio in 2009 ALSA: HDMI negotiation

Lennart Poettering State of Linux Audio in 2009 ALSA: Atomic status updates

Lennart Poettering State of Linux Audio in 2009 ALSA: Atomic mixer updates? PCM synchronized mixer updates?

Lennart Poettering State of Linux Audio in 2009 General: Codec pass-through for A2DP, SPDIF, HDMI, embedded

Lennart Poettering State of Linux Audio in 2009 General: Simpler, high-level PCM API

Lennart Poettering State of Linux Audio in 2009 General: 20s Buffering

Lennart Poettering State of Linux Audio in 2009 General: Revoking, synchronous session switching

Lennart Poettering State of Linux Audio in 2009 Any questions?

That’s all, folks.

Lennart Poettering State of Linux Audio in 2009 That’s all, folks. Any questions?

Lennart Poettering State of Linux Audio in 2009