为我的嵌入式设备定义一个干净且有效的 asound.conf
Define a clean and working asound.conf for my embedded device
我目前正在使用来自参考设计 BSP 的非常复杂的 asound.conf 文件。我想定义我自己的 asound.conf.
我目前对嵌入式设备的需求:
仅以 44100 Hz 的频率播放单声道文件。在扬声器模式下,我只有一个输出扬声器。
当我插入一个插孔时,我必须能够听到两个耳机的声音。
我还需要能够以 11500 Hz 的频率录制来自麦克风的单声道声音。
我可用的声卡:
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
Subdevices: 1/1
Subdevice #0: subdevice #0
#
我没有在输出和输入之间使用相同的速率。但是 ASRC 设备允许我在不同速率下保持良好的性能。这就是为什么我想使用设备 1 而不是设备 0。
我尝试按如下方式定义我的配置:
# cat /etc/asound.conf
pcm_slave.out {
pcm {
type hw
card 0
device 1
}
channels 2
period_time 0
period_size 512
buffer_size 1024
rate 44100
}
pcm.out_mono {
ipc_key 1042
type dmix
slave out
bindings.0 0
bindings.0 1
}
pcm_slave.in {
pcm {
type hw
card 0
device 1
}
channels 2
rate 11025
}
pcm.in_mono {
ipc_key 1043
type dsnoop
slave in
bindings.0 1
}
它与扬声器配合得很好(因此只有一个扬声器)并且 cpu 性能非常好。我使用 out_mono pcm 播放声音。 但是当我使用in_mono pcm时,我只能在插孔模式中听到一个耳机的声音。在 asound.conf 中,我试图说我想重定向两个输出上的单声道声音,但它不起作用:
bindings.0 0
bindings.0 1
第二行绑定正在删除第一行...所以我正在寻找一种能够在两个输出端听到声音的方法。当然,如果我使用 default pcm 而不是 out_mono,声音在两个输出上都能完美工作。
我是不是误解了 asound conf 定义中的某些内容?
dmix
插件有一个 1:1 将它自己的通道映射到从属通道。
要允许其他转换,请使用 plug
插件。它的绑定可以配置为ttable
,但默认值应该是:
pcm.out_mono {
type plug
slave.pcm {
ipc_key 1042
type dmix
slave out
}
}
我目前正在使用来自参考设计 BSP 的非常复杂的 asound.conf 文件。我想定义我自己的 asound.conf.
我目前对嵌入式设备的需求: 仅以 44100 Hz 的频率播放单声道文件。在扬声器模式下,我只有一个输出扬声器。 当我插入一个插孔时,我必须能够听到两个耳机的声音。 我还需要能够以 11500 Hz 的频率录制来自麦克风的单声道声音。
我可用的声卡:
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
Subdevices: 1/1
Subdevice #0: subdevice #0
#
我没有在输出和输入之间使用相同的速率。但是 ASRC 设备允许我在不同速率下保持良好的性能。这就是为什么我想使用设备 1 而不是设备 0。
我尝试按如下方式定义我的配置:
# cat /etc/asound.conf
pcm_slave.out {
pcm {
type hw
card 0
device 1
}
channels 2
period_time 0
period_size 512
buffer_size 1024
rate 44100
}
pcm.out_mono {
ipc_key 1042
type dmix
slave out
bindings.0 0
bindings.0 1
}
pcm_slave.in {
pcm {
type hw
card 0
device 1
}
channels 2
rate 11025
}
pcm.in_mono {
ipc_key 1043
type dsnoop
slave in
bindings.0 1
}
它与扬声器配合得很好(因此只有一个扬声器)并且 cpu 性能非常好。我使用 out_mono pcm 播放声音。 但是当我使用in_mono pcm时,我只能在插孔模式中听到一个耳机的声音。在 asound.conf 中,我试图说我想重定向两个输出上的单声道声音,但它不起作用:
bindings.0 0
bindings.0 1
第二行绑定正在删除第一行...所以我正在寻找一种能够在两个输出端听到声音的方法。当然,如果我使用 default pcm 而不是 out_mono,声音在两个输出上都能完美工作。
我是不是误解了 asound conf 定义中的某些内容?
dmix
插件有一个 1:1 将它自己的通道映射到从属通道。
要允许其他转换,请使用 plug
插件。它的绑定可以配置为ttable
,但默认值应该是:
pcm.out_mono {
type plug
slave.pcm {
ipc_key 1042
type dmix
slave out
}
}