我目前正在使用参考设计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
第二行绑定正在擦除第一行...因此,我正在寻找一种能够在两个输出端听到声音的方法。当然,如果我使用默认 pcm而不是 out_mono ,则声音在两个输出端都能正常工作。
我是否误解了asound conf定义?
答案 0 :(得分:2)
dmix
插件将自己的通道与从属通道进行1:1映射。
要允许其他转换,请使用plug
插件。可以使用ttable
配置其绑定,但是默认值应该是OK:
pcm.out_mono {
type plug
slave.pcm {
ipc_key 1042
type dmix
slave out
}
}