linux双声卡 Alsa asound.conf配置:喇叭 和 HDMI不同声卡输出声音切换,软件混音

  • 主控:RK3566
  • 环境:LCD/HDMI 独显;声卡:喇叭-es8156 、 HDMI-rockchip_hdmi
  • 需求:喇叭和HDMI声音输出随显示切换同步,支持不同音频同时播放

alsa-lib 库将 /usr/share/alsa/alsa.conf 配置文件作为主要的入口点。其他文件在哪是否需要都由这个文件决定。 alsa.conf中自动加载系统全局自定义设置文件 /etc/asound.conf 和用户自定义配置文件 ~/.asoundrc 。
.asoundrc 是一个隐藏文件,是针对个人用户的配置文件,一般存在于用户主目录下。asound.conf 则是全局的配置文件。

板载声卡不支持混音,我们需要用dmix来实现软件混音;
同时每次插拔HDMI 切换显示时需要更新.asoundrc指定声卡

1.创建.asoundrc文件,并写入如下内容:

defaults.ctl.card 0
defaults.pcm.card 0

2.修改.asoundrc, 

echo -e "defaults.ctl.card 1\ndefaults.pcm.card 1" > /etc/.asoundrc

3.生成asound.conf

# asound.conf如下
pcm.!default {
   type plug
   slave.pcm "es8156"
}

pcm.es8156 {
	@args [ CARD DEV ]
	@args.CARD {
			type string
			default {
					@func getenv
					vars [
							ALSA_PCM_CARD
							ALSA_CARD
					]

					default {
							@func refer
							name defaults.pcm.card
					}
			}
	}
	@args.DEV {
			type integer
			default {
					@func igetenv
					vars [
							ALSA_PCM_DEVICE
					]

					default {
							@func refer
							name defaults.pcm.device
					}
			}
	}
	type plug
	slave.pcm {
		type softvol
		control {
			name "softvol"
			card $CARD
		}
		min_dB -40.0
		max_dB -6.0
		resolution 100
		slave.pcm {
			type dmix
			# must be unique for all dmix plugins!!!!
			ipc_key 5978293
			ipc_key_add_uid yes
			slave {
				pcm {
					type hw
					card $CARD
					device $DEV
				}
				channels 2
				period_size 1024
				buffer_size 4096
			}
			bindings {
				0 0
				1 1
			}
		}
	}
}

DTS配置:

hdmi_sound: hdmi-sound {
		status = "okay";
		compatible = "rockchip,hdmi";
		rockchip,mclk-fs = <128>;
		rockchip,card-name = "rockchip,hdmi";
		rockchip,cpu = <&i2s0_8ch>;
		rockchip,codec = <&hdmi>;
	};
es8156_sound: es8156-sound {
				status = "okay";
                compatible = "simple-audio-card";
                simple-audio-card,format = "i2s";
                simple-audio-card,name = "rockchip,es8156-codec";
                simple-audio-card,mclk-fs = <256>;
                simple-audio-card,cpu {
                        sound-dai = <&i2s1_8ch>;
                };
                simple-audio-card,codec {
                        sound-dai = <&es8156>;
                };
        };

es8156: es8156@08 {
		#sound-dai-cells = <0>;
		compatible = "everest,es8156";
		status = "okay";
		reg = <0x08>;
		clocks = <&cru I2S1_MCLKOUT>;
		clock-names = "mclk";
		assigned-clocks = <&cru I2S1_MCLKOUT>, <&cru I2S1_MCLK_TX_IOE>;
		assigned-clock-rates = <12288000>;
		assigned-clock-parents = <&cru I2S1_MCLKOUT_TX>, <&cru I2S1_MCLKOUT_TX>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2s1m0_mclk>;
		spk-con-gpio = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;
		hp-det-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
		hp-ctl-gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
	};
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值