Anleitung für softhdcuvid mit libplacebo

  • Für Ubuntu 18.04 ist das nicht ganz einfach, softhdcuvid mit libplacebo-Unterstützung als normales Paket auf Launchpad bauen zu lassen - zwar bekommt man das CUDA Toolkit 10 von Nvidia als Debian-Paket (https://docs.nvidia.com/cuda/c…on-guide-linux/index.html), aber da die Pakete von nvidias eigenen Servern verteilt werden statt über ein PPA auf Launchpad, kann man das leider nicht zum Auflösen der Bau-Abhängigkeiten nutzen.


    Und da es von Nvidia keine Quellen für die Debian-Pakete gibt, kann man das auch nicht mal eben in einem PPA bauen lassen (was bei der Größe von 2 GB für die Sourcen sowieso schon kaum möglich ist) - bleibt der Weg zu Fuß (darauf achten, dass man ca. 4 GB auf der Systempartition braucht, wenn man das cuda Paket mit allen empfohlenen Abhängigkeiten installiert - ob man mit einem Subset der Metpakete auskommt, habe ich noch nicht ausprobiert):


    Vor der Installation der neuen nvidia-Pakete sollte man alle Reste vorhandener nvidia-Treiber, Cuda-Pakete und die vorher genutzte Version von softhdcuvid vom System entfernen (falls man sie als Paket installiert hat), also

    Code
    1. sudo apt remove vdr-plugin-softhdcuvid
    2. # bzw.
    3. sudo apt remove vdr-plugin-softhdcuvid-396
    4. sudo apt remove nvidia-*
    5. sudo apt autoremove --purge

    Weitere Details zu den Vorarbeiten gibt es in der CUDA-Dokumentation: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions


    Danach kann man sich von https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork ein Paket herunterladen, das die nvidia-Paketquellen einbindet, den Schlüssel für die Paketquelle importieren und cuda (der neue nvidia-Treiber nvidia-driver-410 wird automatisch als Abhängigkeit gezogen) installieren:

    Code
    1. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86\_64/cuda-repo-ubuntu1804\_10.0.130-1\_amd64.deb
    2. sudo dpkg -i cuda-repo-ubuntu1804\_10.0.130-1\_amd64.deb
    3. sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86\_64/7fa2af80.pub
    4. sudo apt update
    5. sudo apt install --install-recommends cuda

    Eine aktuelle Version der libplacebo und der erforderlichen Abhängigkeiten gibt es in ppa:seahawk1986-hotmail/ffmpeg-deinterlace:

    Code
    1. sudo add-apt-repository ppa:seahawk1986-hotmail/ffmpeg-deinterlace
    2. sudo apt full-upgrade

    Bauen von vdr-plugin-softhdcuvid mit libplacebo-Unterstützung


    Zum Bauen von softdcuvid mit libplacebo-Unterstützung werden die folgenden Pakete benötigt :

    Code
    1. sudo apt install gettext pkg-config libva-dev libx11-xcb-dev libxcb-dpms0-dev libxcb-xv0-dev libxcb-glx0-dev libxcb-randr0-dev libxcb-screensaver0-dev libxcb-image0-dev libxcb-util0-dev libxcb-util0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libavcodec-dev libavformat-dev libswresample-dev libswscale-dev libasound2-dev libgl1-mesa-dev libglu1-mesa-dev libvdpau-dev libxcb-ewmh-dev libswscale-dev libglvnd-dev cuda libnvidia-decode-410 libglew-dev freeglut3-dev libglm-dev libfreetype6-dev libplacebo-dev vdr-dev build-essential git

    softhdcuvid bauen

    Zunächst wird das Git-Repository heruntergeladen (das muss nur einmalig passieren, später lässt sich der Klon bei Bedarf aktualisieren):

    git clone https://github.com/jojo61/vdr-plugin-softhdcuvid.git

    Danach betreten wird das Projektverzeichnis mit cd vdr-plugin-softhcuvid.Die letzten Änderungen kann man sich jeweils mit git pull holen.


    Im Makefile muss jetzt noch die Zeile 22 (https://github.com/jojo61/vdr-plugin-softhdcuvid/blob/master/Makefile#L22) in LIBPLACEBO=1 geändert werden, damit das Plugin mit Unterstützung für diese Bibliothek gebaut wird.


    Jetzt kann man das Plugin bauen und ins System installieren lassen: make && sudo make install


    Damit der VDR das Plugin lädt, muss noch eine /etc/vdr/conf.avail/softhdcuvid.conf mit folgendem Inhalt erstellt werden (falls sie noch nicht existiert):

    Code
    1. [softhdcuvid]
    2. -D
    3. -f

    Mit dem Befehl sudo vdrctl enable softhdcuvid lässt sich das Plugin dann aktivieren (dabei wird die Konfigurationsdatei nach /etc/vdr/conf.d/ verlinkt). Andere Ausgabeplugins (wie softhddevice) sollten deaktiviert werden.


    Zum Schluss den Rechner neu starten,damit der neue nvidia-Treiber geladen und der VDR mit dem neuen Plugin gestartet wird.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von mini73 ()

  • Achtung: skindesigner ist nicht kompatible!

    jojo61 hatte einen Patch gepostet, der das Problem zumindest verbessern soll: softhddevice with hevc and UHD (in softhddevice with hevc and UHD wird das grundlegenden Problem kurz angerissen) - ich baue das Plugin mal mit dem Patch in dem PPA ppa:seahawk1986-hotmail/ffmpeg-deinterlace (da ich nicht weiß, ob das auf andere Frontends Auswirkungen hat).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wie es aussieht gibt es auch mit Patch noch OSD-Reste und Crashes...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ja ich hatte den Patch auch nur kurz getestet und nutze selber kein skindesigner. Es wäre mir lieb wenn sich da jemnand anderes drum kümmern könnte. Der skindesigner ist ja auch nicht wirklich UHD fähig und müsste da auch noch angepasst werden.

    Ich werde mal versuchen ob ich da noch etwas am softhdcuvid verbessern kann, aber das Problem ist ursächlich beim skindesigner So wie ich das gesehen habe sind die verschiedenen Threads da nicht syncronisiert und die Befehle kommen in unterschiedlichen Reihenfolgen. Das kann man ganz gut sehen wenn man das Menü aufruft. Manchmal klappt es das Video ins Fenster zu verkleinern und manchmal klappt es nicht. Sobald man dann die Menuselektion ändert kommt es dann richtig. Und irgendwo ist noch ein Timeout drin, wenn das Menü nicht reagiert dann kommt nach so 5 sekunden doch noch die richtige Reaktion.

    Das ist bisher nicht aufgefallen und wenn man debuggt ob das OSD angezeigt wird dann sieht man das mit dem skindesigner das OSD fast immer akiv ist. Nur sieht man das nicht weil es auf transparent oder leer initialisiert ist. Das klappt aber mit libplacebo nicht und ist auch konzeptionell falsch.

  • Der skindesigner ist ja auch nicht wirklich UHD fähig und müsste da auch noch angepasst werden.

    Dazu gabe es ja bereits in der Vergangenheit einige Threads hier im Forum.


    Mir ist jetzt noch eingefallen, dass wohl die fehlenden Hintergrunggrafiken im skindesigner-Plugin vermutlich aber am softhddevice-Plugin liegen sollen und nicht nur am skindesigner-Plugin. Dazu wurde von johns bereits mal was geschrieben, was in den Sourcen vom softhddevice-Plugin zu ändern sei, damit es da besser funktioniert! Ich weiß nicht, ob das bereits in den Sourcen vom softhddevice-Plugin übernommen wurde?

    softhddevice <> 4K Auflösung skindesigner (Post #5)

  • Ja was da steht habe ich gemacht. Sonst würde das LCARS auch nicht laufen. Skindesigner mit UHD läuft ja auch wenn man das OSD fest auf 1920x1080.

    einstellt. Dann wird es halt auf UHD hochskaliert. Ich habe gerade nochmal einen fix für den skindesigner im softhdcuvid eingecheckt. Vielleicht hilft das ja.


    Das Problem ist das der softhdcuvid mit libplacebo und vulkan nicht mehr auf den vsync wartet (d.h. schläft). Das kann vulkan nicht so richtig. Und dann schläft er an einer anderen Stelle und da kommen die Befehle vom skindesigner nicht durch. Jetzt schlafe ich einfach mal 1ms wo sonst der swap schlafen würde. Das scheint zu helfen.