# Copyright 2006 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/desc/alsa_pcm_plugins.desc,v 1.3 2008/08/02 20:43:59 betelgeuse Exp $

# This file contains descriptions of ALSA_PCM_PLUGINS USE_EXPAND flags.
# Improved documentation about them is accepted with pleasure

# Keep it sorted.
adpcm - Enable the adpcm internal plugin.
alaw - Enable the alaw internal plugin.
asym - Enable the plugin to create virtual devices with different inputs/outputs
copy - Enable the copy internal plugin.
dmix - Enable the software mixing plugin (for output)
dshare - Enable the dshare internal plugin.
dsnoop - Enable the plugin to allow to processes to get the same input
empty - Enable the empty internal plugin.
extplug - Enable the extplug internal plugin.
file - Enable the plugin to save output to a file
hooks - Enable the hooks internal plugin.
iec958 - Enable the passthrough digital audio plugin
ioplug - Enable the plugin to connect to hardware devices (*important*)
ladspa - Enable the ladspa internal plugin.
lfloat - Enable the lfloat internal plugin.
linear - Enable the linear internal plugin.
meter - Enable the meter internal plugin.
mmap_emul - Enable mmap emulation for ro/wo devices.
mulaw - Enable the mulaw internal plugin.
multi - Enable the multi internal plugin.
null - Enable the discard output plugin
plug - Enable the plugin to connect to other plugins or devices (*important*)
rate - Enable the samplerate conversion plugin
route - Enable the route internal plugin.
share - Enable the share internal plugin.
shm - Enable the Shared Memory plugin (needed to transform an output into an input)
softvol - Enable the software volume control plugin
