답변:
완전한 대답이 아니라 그 문제에 대한 몇 가지 생각.
하드웨어 측면을 살펴 보자. 불행히도 회로도 는 Pi B +에 유용하지 않으며 Pi2에도 사용할 수 없으므로 B Rev 2.1이 붙어 있습니다.
헤드폰 잭의 오디오 출력은 PWM에 의해 생성됩니다. RC 저역 통과 필터를 통해 BCM2835의 GPIO 핀 40 및 45에서 바로. ( 2 페이지 회로도 참조)
반면 HDMI의 오디오는 디지털 방식으로 전송됩니다. Wikipedia의 설명 : "디지털 오디오의 경우 HDMI 장치에 오디오가있는 경우 기본 형식 인 스테레오 (압축되지 않은) PCM을 구현해야합니다." 실제로 앞에서 언급 한 PWM 기반 아날로그 오디오는 HDMI 커넥터로 공급되지 않습니다.
그래서 우리는 아날로그 헤드폰 잭과 디지털 HDMI에 대한 오래된 뉴스를 확인했습니다. 내 관점에서이 두 가지를 개별적으로 그리고 독립적으로 (따라서) 동시에 다루어야한다. 이제 PulseAudio
하나의 소스에서 여러 개의 사운드 하드웨어로 스트리밍 할 수 있어야합니다. 나는 여전히 이것에 관해 왜 웹에서 찾을 수 없는지 궁금합니다.
나도 같은 일을 할 수 있기를 바랍니다. 최소한 나는 궁극적 인 협력 개발을 희망하는 몇 가지 아이디어로 이러한 추세에 기여하려고 노력합니다.
내 마음에 오는 것은 각각 하나의 신호 경로마다 병렬로로드 된 두 개의 드라이버 모듈 인스턴스가있을 수 있다는 것입니다. 그러나 여기에는 아래의 이상적인 샘플과 같이 커널 모듈 레벨 매개 변수가 필요하며 각각 하나의 ALSA 장치를 생성합니다 (HDMI의 경우 0, 샘플의 이어폰의 경우 3). 그런 다음 어떤 소리를 다른 소리로 보내거나 다른 소리로 보낼 수 있습니다.
snd_bcm2835 모듈 소스 코드 홈페이지 (간단한 패치의 타당성을 평가하기 위해)에 대해 Google을 시도했지만 행운과 시간은 없었으므로 지금은 포기했습니다. 누군가가 소스를 찾아 링크를 제공하면 다시 살펴 보겠습니다.
노트 !!! 다음은 이상적인 커널 모듈로드 명령 샘플입니다. 실제 Raspberry Pi 소프트웨어에는 이러한 매개 변수 (AFAIK)가 없습니다!
modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3