[gst-devel] Fwd: [linux-audio-dev] Toward a modularization of audio component

Erik Walthinsen omega at temple-baptist.com
Fri May 4 00:02:12 CEST 2001

Hrm, ya think?  /me goes to respond to the original post

---------- Forwarded message ----------
Date: Fri, 04 May 2001 00:21:43 +0200
From: Abramo Bagnara <abramo at alsa-project.org>
To: linux-audio-dev at ginette.musique.umontreal.ca, alsa-devel at alsa-project.org
Subject: [linux-audio-dev] Toward a modularization of audio component

In the past days I've thought a lot about whether, how and why current
alsa-lib PCM model is not suitable for all-in-a-process model (that
seems the only way to write applications with pseudo-RT needs).

The result is the following simple proposal.

The short resume is:
- every audio producer (a synthesizer, an mp3 file decoder, an hardware
capture stream, a .wav reader, etc.) have a PCM capture API
- every audio consumer (an mp3 file encoder, a .voc writer, an hardware
playback stream, etc.) have a PCM playback API

Following this model, by example an FX plugin is an audio producer that
take as input one ore more audio producers.

Now, suppose to rewrite aplay: it become a trivial application that copy
audio data from an audio producer to an audio consumer, but try to
imagine what it's able to do now:
- mp3 decoder/player (like mpg123)
- file converter (like sox)
- midi converter/player (like timidity)
- drop free sound recorder
- and everything you can imagine assembling our bricks

All that using perfectly reusable software modules (shared object).
The guideline is: we are no longer developing an application but an
object with a well known API.

Ok, but what about legacy application, xmms by example, how to transform
it in an audio producer?

In this case we'll fall back in the previous model (not suitable for
pseudo-RT needs): we'll insert a pcm_lbserver as audio consumer for
application xmms and our in-process audio producer will be a pcm_shm
linked to it.

Abramo Bagnara                       mailto:abramo at alsa-project.org

Opera Unica                          Phone: +39.546.656023
Via Emilia Interna, 140
48014 Castel Bolognese (RA) - Italy

ALSA project               http://www.alsa-project.org
It sounds good!

More information about the gstreamer-devel mailing list