Antworten:
Keine vollständige Antwort, sondern ein paar Gedanken dazu.
Werfen wir einen Blick auf die Hardwareseite: Schaltpläne sind für den Pi B + leider nicht hilfreich und für den Pi2 nicht verfügbar, daher bleiben wir hier vorerst bei B Rev 2.1.
Der Audioausgang der Kopfhörerbuchse wird von PWM erzeugt. Direkt von den GPIO-Pins 40 und 45 des BCM2835 über einen RC-Tiefpassfilter. (Siehe Schaltpläne , Seite 2.)
Audio über HDMI wird dagegen angeblich digital übertragen. Wikipedia gibt an: "Wenn ein HDMI-Gerät über Audio für digitales Audio verfügt, muss das Basisformat implementiert werden: Stereo-PCM (unkomprimiert)." Tatsächlich wird das zuvor erwähnte PWM-basierte analoge Audio nicht zum HDMI-Anschluss geleitet.
Jetzt haben wir einige alte Neuigkeiten überprüft: analoge Kopfhörer-Buchse vs. digitales HDMI. Aus meiner Sicht sollten diese beiden also auch (quasi) gleichzeitig getrennt und unabhängig voneinander angesprochen werden. Jetzt PulseAudio
sollte es möglich sein, von einer Quelle auf mehrere Sound-Hardware-Teile zu streamen. Ich frage mich immer noch, warum es im Internet nichts zu diesem Thema gibt.
Ich würde es lieben, dasselbe auch zu können. Zumindest versuche ich, mit einigen Ideen, die auf eine mögliche kooperative Entwicklung hoffen, zu diesem Trend beizutragen.
Was mir in den Sinn kommt, ist, dass es möglicherweise zwei Instanzen von Treibermodulen geben könnte (und sollte), die für jeweils eine Signalroute parallel geladen werden. Dies würde jedoch einige Kernel-Modul-Level-Parameter erfordern, wie im folgenden idealen Beispiel, die jeweils ein ALSA-Gerät erzeugen (Nummer 0 für HDMI und 3 für Kopfhörer im Beispiel). Sie könnten dann einen Ton an den einen oder den anderen senden (oder an beide kopieren).
Ich habe versucht, die Quellcode-Homepage des snd_bcm2835-Moduls zu googeln (um die Durchführbarkeit eines einfachen Patches zu bewerten), aber kein Glück (und keine Zeit). Deshalb habe ich fürs Erste aufgegeben. Wenn jemand die Quelle findet und den Link beisteuert, werde ich mich das noch einmal ansehen.
HINWEIS !!! Das Folgende ist nur ein ideales Beispiel für Kernelmodul-Ladebefehle. In der aktuellen Raspberry Pi Software gibt es keine solchen Parameter (AFAIK)!
modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3