Linux 为我的嵌入式设备定义一个干净且有效的asound.conf

Linux 为我的嵌入式设备定义一个干净且有效的asound.conf,linux,embedded,alsa,buildroot,libasound,Linux,Embedded,Alsa,Buildroot,Libasound,我目前正在使用参考设计BSP中非常复杂的asound.conf文件。我想定义我自己的asound.conf 我当前对嵌入式设备的需求: 仅以44100 Hz的频率播放单声道文件。在扬声器模式下,我只有一个输出扬声器。 当我插上插头时,我必须能听到两个耳机的声音。 我还需要能够从单声道麦克风录制11500 Hz频率的声音 我的可用声卡: # aplay -l **** List of PLAYBACK Hardware Devices **** card 0: wm8960audio [wm89

我目前正在使用参考设计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\u monopcm播放声音但是当我在单声道pcm中使用时,我只能在插孔模式下听到一个耳机中的声音。在asound.conf中,我试图说我想重定向两个输出上的单声道声音,但它不起作用:

    bindings.0 0
    bindings.0 1
第二行绑定正在删除第一行。。。因此,我正在寻找一种方法,能够听到两个输出的声音。当然,如果我使用默认值pcm而不是输出单声道,则声音在两种输出上都能正常工作


我是否误解了asound conf定义中的某些内容?

dmix插件有一个1:1的从通道映射

要允许其他转换,请使用
插件
插件。它的绑定可以配置为
ttable
,但默认值应该是OK:

pcm.out_mono {
    type plug
    slave.pcm {
        ipc_key 1042
        type dmix
        slave out
    }
}

dmix
插件将自己的通道与从属通道进行1:1映射

要允许其他转换,请使用
插件
插件。它的绑定可以配置为
ttable
,但默认值应该是OK:

pcm.out_mono {
    type plug
    slave.pcm {
        ipc_key 1042
        type dmix
        slave out
    }
}

编辑:我之前的评论发布得太快了。你的答案一切正常。没有办法提高cpu使用率吗?播放音频的原始cpu使用率:8.51%cpu。我的新asound.conf仅包含dmix类型:7.51%。使用插头类型进行修改时的Cpu使用率:9.27%:(显然,这是复制频道所需的CPU。也有可能应用程序现在认为它可以使用其他示例格式。编辑:我之前的评论发布得太快了。所有内容都与您的答案完美配合。没有办法提高CPU使用率?播放音频的原始CPU使用率:8.51%CPU。使用我的新asou仅使用dmix类型的nd.conf:7.51%。使用插件类型的修改的Cpu使用率:9.27%:(显然,这是复制周围通道所需的Cpu。应用程序现在可能认为可以使用其他一些示例格式。