Odpowiedzi:
Nie wymyślenie pełnej odpowiedzi, ale kilka przemyśleń na ten temat.
Spójrzmy na stronę sprzętową: schematy niestety nie są pomocne dla Pi B + i nawet nie są dostępne dla Pi2, więc na razie utknęliśmy w wersji B Rev 2.1.
Wyjście audio gniazda słuchawkowego jest generowane przez PWM. Bezpośrednio z pinów 40 i 45 GPIO BCM2835 przez filtr dolnoprzepustowy RC. (Patrz schematy , strona 2.)
Z drugiej strony dźwięk na HDMI jest rzekomo przesyłany cyfrowo. Wikipedia stwierdza: „W przypadku dźwięku cyfrowego, jeśli urządzenie HDMI ma dźwięk, konieczne jest wdrożenie formatu podstawowego: stereo (nieskompresowany) PCM”. I rzeczywiście, wspomniany wcześniej analogowy dźwięk oparty na PWM nie jest podawany do złącza HDMI.
Więc teraz zweryfikowaliśmy kilka starych wiadomości: analogowe gniazdo słuchawkowe vs. cyfrowe HDMI. Z mojego punktu widzenia tych dwóch należy rozpatrywać osobno i niezależnie, a zatem również (quasi -) jednocześnie. Teraz PulseAudio
powinno być możliwe przesyłanie strumieniowe z jednego źródła do wielu urządzeń dźwiękowych. Nadal zastanawiam się, dlaczego w sieci nie ma nic na ten temat.
Bardzo chciałbym móc zrobić to samo. Przynajmniej staram się przyczynić do tego trendu, mając pewne pomysły, które mogą mieć nadzieję na ostateczny rozwój współpracy.
Przychodzi mi na myśl, że być może mogłyby (i powinny) istnieć dwa przypadki równoległego załadowania modułu sterownika, każdy dla jednej trasy sygnału. Wymagałoby to jednak pewnych parametrów na poziomie modułu jądra, takich jak w idealnej próbce poniżej, z których każde tworzy jedno urządzenie ALSA (numer 0 dla HDMI i 3 dla słuchawek w próbce). Następnie możesz wysłać dźwięk do jednego i drugiego do drugiego (lub skopiować do obu).
Próbowałem google na stronie głównej kodu źródłowego modułu snd_bcm2835 (aby ocenić wykonalność prostej poprawki), ale bez powodzenia (i czasu), więc na razie się poddałem. Jeśli ktoś znajdzie źródło i włączy link, przejrzę je ponownie.
UWAGA !!! Poniżej znajduje się tylko idealna próbka poleceń ładowania modułu jądra. W rzeczywistym oprogramowaniu Raspberry Pi nie ma takich parametrów (AFAIK)!
modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3