Proposal: libunixmm.so (about the Comparison: MAS, GStreamer, NMM)

Kai Vehmanen kai.vehmanen at wakkanet.fi
Thu Sep 9 23:02:10 BST 2004


On Thu, 9 Sep 2004, Christian Esken wrote:

>> aren't any soundservers that are really closely connected with either desktop 
>> project I think we could probably do such in a reasonable fashion.
> Which sound servers are there?
> On Akademy I learned, gstreamer has none.
> MAS has a sound server.
> NMM has a sound server.
> arts has a sound server.
> esd is a sound server.
> What about NAS?
> ...

Just in case there are people who don't know about this:

ALSA's dmix plugin provides transparent (i.e. all ALSA apps 
can take advantage of it) software-mixing:

http://opensrc.org/alsa/index.php?page=DmixPlugin
http://opensrc.org/alsa/index.php?page=Dmix+Kde+-+arts%2C+ESD+and+SDL+quick+and+dirty+HOWTO
http://gentoo-wiki.com/HOWTO_ALSA_sound_mixer_aka_dmix
http://forums.gentoo.org/viewtopic.php?t=99075

It's not perfect, but all the time getting better. It has some very good 
features:
	
	- the API is stable (alsa-lib past 1.0, has been developed since
 	  1998 and has received much attention from both driver and
	  application developers)
	- the API is widely used: ALSA is the default in Linux-2.6 -->
	  alsa-lib is the standard API .. lots and lots of applications 
        - dmix is very lightweight (no server process; the mechanism 
	  Jaroslav has come up with is very, very clever)
        - provides the option to use hw-acceleration on cards
          that support it (not automatic, but fits the model perfectly
	  as ALSA knows about hw capabilities)
	- does not add any additional latency, and very little processing
	  overhead (again, it's a very clever mechanmism)
 	- etc, etc...

Now the biggest problem for KDE and GNOME is that alsa-lib is currently
Linux-only... or is it? Now what you may not know that there is already a
plugin to make alsa-lib talk to jackd. And JACK of course has support for
PortAudio which again is probably the most widely supported cross-platform
audio backend. Ok, I admit that is at least one abstract layer too much,
but you get the picture -- alsa-lib is not just about Linux.  Someone just
has to write alsa-lib plugins for BSDs, Solaris, win32 and so on...

Definititely ALSA's dmix does not solve all the problems. I still prefer
to run JACK on top of alsa-lib, as I need sample-synchronous execution of
multiple apps and inter-app routing (these are required for multitrack
recording where multiple audio apps are contributing to one session).
Also, media players will need a decoder-encoder-processor framework such
as gstreamer or aRts. Network support is another thing (maybe another
alsa-lib plugin).

Anyway, as alsa-lib is a library, basicly anything (network transparency, 
mixing, alternative backends) can be added to it without affecting the 
applications. All the time, the stable, post-1.0, widely used API of 
alsa-lib will remain the same. It's something on top of which we can all 
build our own systems (think: libX11...).

-- 
 http://www.eca.cx
 Audio software for Linux!



More information about the kde-multimedia mailing list