Status

Introduction

Eventually we want replace esound with a better solution, since esound has many bugs and is unsuitable for low-latency applications like video playback. We also propose a transition that will make sound work everywhere and allows a more flexible default configuration.

Rationale

Breezy sets up and uses esound for all Gnome-related sound output. esound provides a sound card independent mixing daemon. However, users report many bugs in esound that do not happen when using ALSA directly. In addition, esound has a high latency which makes it unsuitable for video playback.

Breezy enabled ALSA's dmix feature by default which allows several applications to open the sound device simultaneously and mixes streams. It should make the concept of a desktop mixing daemon obsolete.

Use Cases

Scope

The change is confined to the Gnome desktop and Gnome applications, which usually use gstreamer. Non-gstreamer applications usually have their own way of handling audio configuration, and often default to ALSA or automatic detection nowadays. This spec is only about finding a good backend for gstreamer.

Design

gstreamer

gstreamer should use the ALSA backend if ALSA dmix is enabled, fall back to esound or arts if the daemon is running, then fall back to ALSA without dmix, and finally fall back to OSS.

This issue has been discussed with upstream, and the following design has been agreed upon:

ALSA

esound

libgnome

libgnome currently uses libesd directly, so sound events will not work as intended. It should use gstreamer or ALSA directly.

Implementation

Code

gstreamer alsadmix:

esound:

libgnome:

libao:

hwdb-client:

Data preservation and migration

Jack usage

[Note: gstreamer currently has no working jacksink that would work the way alsa or esd sink work, in addition to that the old jack output plugin is so far not ported to 0.10 ]

Questions

Comments

Upstream has started a wiki about this: http://live.gnome.org/GStreamer/esd


CategorySpec

GstreamerAudioBackend (last edited 2008-08-06 16:40:06 by localhost)