May 4, 2011

Usare passthrough con PulseAudio

PulseAudio è un sound server usato da quasi tutte le principali distribuzioni e ha un bug aperto da oltre 3 anni che impedisce di poter mandare il flusso AC3 o DTS direttamente all'amplificatore (via S/PDIF o HDMI).

Nonostante alcuni passi in avanti siano stati fatti da alcuni sviluppatori esterni al progetto, infatti Arun ha rilasciato delle patch per gstreamer e cbxbiker61 ha adattato quelle patch per XBMC, nulla è ancora stato rilasciato ufficialmente dal team di PulseAudio.

L'unico workaround possibile è quello di usare pasuspend.

Per esempio
pasuspender -- mplayer -ac hwac3,hwdts, -ao alsa:device=hw=0.1 yourfilehere.avi

Il tool pasuspender disabilita PulseAudio finché il comando specificato (dopo --) è in esecuzione, permettendone l'accesso esclusivo al device audio.

Ovviamente è possibile creare un alias in .bashrc (o .zshrc) per evitare di doversi ricordare tutto il comando completo ogni volta.

Ad esempio potete mettere la seguente riga in .bashrc e lanciare ac3mplayer yourfilehere.avi direttamente
alias ac3mplayer="pasuspender -- mplayer -ac hwac3,hwdts, -ao alsa:device=hw=0.1"

Ovviamente al posto di hw=0.1 dovete usare il device corretto.