ALSA plugin 文档

原文地址 http://alsa.opensrc.org/Plugin_Documentation


Official documentation

ALSA plugins的官方文档地址是 http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

此外还可以在下面地址发现有用的信息:http://www.alsa-project.org/alsa-doc/alsa-lib/pages.html


Plugin Basics

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"标识第一块卡上的第一个设备


Signal Path Illustration

下面演示了SLAVE和PLUGIN/VIRTUAL DEVICE在信号路径中的位置

input signal (audio program) --> SOMENAME (plug/virtual device) --> SLAVENAME (slave device)
如果slave device是一个虚拟设备,那么甚至可以把slave device作为另外一个虚拟设备的输入信号。这个过程继续下去,直到最后一个plugin的SLAVE是一个硬件设备(不是虚拟设备)。

Example .asoundrc Configuration

创建一个自动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

你可能感兴趣的:(ALSA plugin 文档)