Answers:
没有提出完整的答案,但对此有一些想法。
让我们看一下硬件方面:不幸的是,原理图对Pi B +没有帮助,而对于Pi2甚至都不可用,因此我们暂时停留在B Rev 2.1。
耳机插孔的音频输出由PWM生成。直接从BCM2835的GPIO引脚40和45通过RC低通滤波器。(请参见第2页的原理图。)
另一方面,HDMI上的音频被认为是数字传输的。维基百科指出:“对于数字音频,如果HDMI设备具有音频,则需要实现基线格式:立体声(未压缩)PCM。” 实际上,之前提到的基于PWM的模拟音频不会馈入HDMI连接器。
因此,现在我们已经验证了一些旧消息:模拟耳机插孔与数字HDMI。以我的观点,这两个问题应分别和独立地处理,因此也应(准)同时处理。现在PulseAudio
应该能够从一个源流式传输到多个声音硬件。我仍然想知道为什么在网络上找不到与此相关的内容。
我也希望能够做同样的事情。至少我希望通过一些想法最终为合作发展做出贡献。
我想到的是,可能(并且应该)有两个并行加载的驱动程序模块实例,每个实例用于一条信号路径。但是,这将需要一些内核模块级别的参数,例如下面的理想示例,每个参数创建一个ALSA设备(示例中HDMI编号为0,耳机为3)。然后,您可以将声音发送到一个,另一个发送到另一个(或同时复制到两个)。
尝试使用google搜索snd_bcm2835模块源代码主页(以评估简单补丁的可行性),但是没有运气(和时间),所以我暂时放弃了。如果有人找到了源并提供了链接,我将再次进行研究。
注意 !!!以下只是内核模块加载命令的理想示例。在实际的Raspberry Pi软件中,不存在这样的参数(AFAIK)!
modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3