GstreamerAudioBackend

Revision 1 as of 2005-10-25 12:19:00

Clear message

Status

Introduction

We want to replace esound with a better solution, since esound has many bugs and is unsuitable for low-latency applications like video playback.

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

  • John wants to play a movie with totem and wants good A/V synchronisation. At the same time he wants to hear sound events (from e. g. gnomemeeting) .
  • Mary wants to share the sound device with John, so her desktop session should be able to playback sound as well. John's running session should not prevent Mary from playing sound.

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

Implementation

Code

Data preservation and migration

Outstanding issues

BoF agenda and discussion

braindump, to be discussed in the meetings:

  • discuss alternatives to gstreamer->esound->ALSA (direct ALSA, other upstream plans); this will probably lead to the conclusion that ALSA dmix is the preferred default

  • design a small noninteractive application that detects whether dmix is supported
  • change gstreamer to use ALSA if dmix works, or use esound if not
  • should esound always be running as a fallback?
  • interaction with upstream (MartinPitt contacted upstream, asked for cooperation and debug plan)

  • upgrade to latest ALSA (1.10) both in the kernel and userspace
  • check that this does not break sound events (libgnome does not use gstreamer)