原文地址 http://alsa.opensrc.org/Plugin_Documentation
此外还可以在下面地址发现有用的信息:http://www.alsa-project.org/alsa-doc/alsa-lib/pages.html
Plugins 用来创建虚拟设备,除了对声音流增加一些额外的处理,这些虚拟设备和普通的硬件设备使用方法一样。虚拟设备在home目录下的.asoundrc或者/etc/asound.conf文件中定义。
下面演示了.asoundrc文件中定义虚拟设备的基本方法
pcm.SOMENAME { type PLUGINTYPE slave { pcm SLAVENAME } }这个配置创建了名为SOMENAME的虚拟设备,类型为PLUGINTYPE,这个虚拟设备的输出连接到名为SALVENAME的虚拟或者硬件设备。
SOMENAME可以是任何简单的名字,它是你将来要操作的设备名称。当前有几个预定以的虚拟设备名,比如default和dmix
PLUGNAME是官方文档给出的类型名。比如dmix, jack和linear
SLAVENAME是另外一个虚拟设备的名字或者代表硬件设备的字符串。"hw:0,0"标识第一块卡上的第一个设备
下面演示了SLAVE和PLUGIN/VIRTUAL DEVICE在信号路径中的位置
input signal (audio program) --> SOMENAME (plug/virtual device) --> SLAVENAME (slave device)如果slave device是一个虚拟设备,那么甚至可以把slave device作为另外一个虚拟设备的输入信号。这个过程继续下去,直到最后一个plugin的SLAVE是一个硬件设备(不是虚拟设备)。
创建一个自动rate-conversion的虚拟设备,使之输出到default设备,可以配置如下
pcm.myplugdev { type plug slave { pcm default rate 44100 } }现在,我们可以在程序中使用myplugdev这个设备,这样在声音输出到default之前,会被自动转换为44100Hz。比如我们可以运行
"aplay -D myplugdev foobar.wav"
声音流路径如下:
aplay --> myplugdev (plugin named "plug" converts rate) --> default --> hw0,0