问题:采用ALC897的codec芯片,默认输入:front-mic,rear-mic;默认输出:headphones,line-out;其中由于输出只接了其中一路默认line-out,且由于codec的line-out和rear-mic的jack都能正常工作,在正常工作过程中由于jack上报对应的line-out和rear-mic的unplugin事件音频输出会进行相应的切换,实际需求是不需要软件上对对应的jack识别插拔进行切换动作。
声音配置默认走的是pulseaudio服务进行的,如果需要针对以上问题进行相应的调整的话,主要是针对jack事件相应进行相应的调整或者是直接让对应的line-out的jack事件一直保持plugin状态,当耳机拔出的时候对应的jack状态不变成对应的unplugin状态即可。
实际参考wiki进行调整:
https://wiki.archlinux.org/title/PulseAudio/Examples#PulseAudio_through_JACK
puluseaudio的整个工作流程:
由于pulseaudio是通过profiles--->path-->element,可以通过element使jack事件保持plugin状态即可。
profile文件定位: alc897声卡采用的是ft-hda的驱动,通过/usr/lib/udev/rules.d/90-pulseaudio.rules的第25行决定对应的profile文件采用的是/usr/share/pulseaudio/alsa-mixer/profile-sets/pulse-ft-hda.conf对应的声卡进行配置。
paths-sink定位:通过查看对应的pulse-ft-hda.conf文件定位对应的paths-output采用的是/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf
element定位:通过查看analog-output-lineout.conf文件定位Jack Line Out状态进行设置。
当然,正常需要通过调试pulseaudio的话可以通过命令pulseaudio -k停止运行服务,然后执行pulseaudio --daemonize=no --log-level=4 --log-target=file:test.log查看对应test.log日志进行代码和配置的调试工作。
解决方案:
由于pulseaudio针对hda-ft的输出只需要一路sink,同时配置jack line out为plugin
第一处修改:通过修改/usr/share/pulseaudio/alsa-mixer/profile-sets/pulse-ft-hda.conf
第二处修改:/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf