Ich verwende softhddevice ohne Audio-Parameter, so dass das default audio device benutzt wird, was bei Ubuntu pulseaudio ist. Das funktioniert soweit prima, auch mit passthrough.
Den Wechsel zu Kodi mache ich durch Aufruf eines Scripts über die commands.conf:
#!/bin/bash
(
export DISPLAY=:0
svdrpsend remo off
svdrpsend plug softhddevice deta
pasuspender -- env KODI_AE_SINK=ALSA kodi
svdrpsend remo on
svdrpsend plug softhddevice atta
) > /dev/null 2>&1 &
Der Aufruf von kodi in Kombination mit pasuspender war nötig, damit Kodi auch über passthrough ausgeben kann. Das habe ich so aus einem Kodi Forum, dort heisst es u.a..:
Zitatpasuspender is a tool that can be used to tell a local PulseAudio sound server to temporarily suspend access to the audio devices, to allow other applications access them directly. pasuspender will suspend access to the audio devices, fork a child process, and when the child process terminates, resume access again.
Ich kann damit testweise immer wieder zwischen vdr und Kodi hin- und herwechseln, ohne dass es Probleme gibt. Verwende ich kodi aber länger und spiele mehrere Medien ab, gibt es bei der Rückkehr zu vdr (mittels "Verlassen"-Menüeintrag in kodi) immer wieder das Problem, dass vdr stumm ist. Auch ein restart von vdr über das Einstellungsmenü ändert daran nichts. Der Ton kommt erst nach einem reboot wieder. Anscheinend wird das audio device noch blockiert oder das resume des pasuspender funktioniert nicht richtig. Letzteres ist wohl die wahrscheinlichste Ursache, denn ich finde viele ähnliche Problemmeldungen.
Gibt es eine bessere Lösung? Den Rechner komplett auf alsa umstellen möchte ich nicht.
Für das mplayer-Plugin in Verbindung mit mpv (ich verwende seit Jahren mit geringen Modifikationen meine hier vorgestellte Lösung) habe ich einen anderen Weg gewählt. Das mplayer-Startscript macht erst ein yavdr-pasuspend --suspend, , dann wird mpv mit Ausgabe über alsa gestartet
( --audio-device=alsa/hdmi:CARD=NVidia,DEV=0 --audio-spdif=ac3,dts,dts-hd,eac3,truehd )
und beim Beenden wird yavdr-pasuspend --resume ausgeführt. Da treten die Probleme nicht auf. Ich habe aber noch nicht herausgefunden, ob ich kodi in ähnlicher Weise dazu zwingen kann, den Ton direkt an ein alsa-device zu geben - und zwar so, dass passthough benutzt wird. Alle Lösungen verweisen immer auf pasuspender -- env KODI_AE_SINK=ALSA kodi