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
    sudo apt remove vdr-plugin-softhdcuvid
    # bzw.
    sudo apt remove vdr-plugin-softhdcuvid-396
    sudo apt remove nvidia-*
    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
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86\_64/cuda-repo-ubuntu1804\_10.0.130-1\_amd64.deb
    sudo dpkg -i cuda-repo-ubuntu1804\_10.0.130-1\_amd64.deb
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86\_64/7fa2af80.pub
    sudo apt update
    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
    sudo add-apt-repository ppa:seahawk1986-hotmail/ffmpeg-deinterlace
    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
    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
    [softhdcuvid]
    -D
    -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.)

    Einmal 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.

  • Hallo,


    ich wollte die aktuelle Version ohne libplacebo installieren.


    Dann bekommen ich aber immer diese Fehlermeldung:


    Code
    Apr 27 19:53:43 ubuntu18 vdr: [7348] ERROR: /usr/lib/vdr/plugins/libvdr-softhdcuvid.so.2.4.0: undefined symbol: avcodec_find_decoder_by_name
    Apr 27 19:53:43 ubuntu18 vdr[7348]: vdr: /usr/lib/vdr/plugins/libvdr-softhdcuvid.so.2.4.0: undefined symbol: avcodec_find_decoder_by_name

    Kann mir jemand sagen was sie bedeutet? Eine Fehlermeldung beim bauen gab es nicht.


    Gruß


    Murry

  • Das kann ich hier gerade nicht nachvollziehen - hast du make clean laufen lassen, um Rückstände von früheren Kompilierungsversuchen zu entfernen? Was sagt apt policy libavcodec-dev?

    Wie sieht die Ausgabe von make nach einem make clean aus?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • apt policy libavcodec-dev




    Ich habe das Verzeichnis gelöscht und das git neu geholt. -> Keine Änderung, siehe make.txt



    Baust du auch ohne libplacebo?

  • Code
    Package libavfilter was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libavfilter.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libavfilter' found

    Da fehlt auf jeden Fall das Paket libavfilter-dev

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo seahawk1986,


    vielen Dank für deine Anleitung. Wenn ich diese bei Ubuntu 20 (focal) anwende, bekomme ich folgende Meldung:

    Code
    libnvidia-decode-410 : Hängt ab von: libnvidia-compute-410 (= 410.129-0ubuntu1) soll aber nicht installiert werden
                            Kollidiert mit: libnvidia-decode
     libnvidia-decode-440 : Kollidiert mit: libnvidia-decode

    Wenn ich dann libnvidia-compute-410 und cuda-10-2 hinzufüge (weil dann noch die Meldung "cuda : Hängt ab von: cuda-10-2 (>= 10.2.89) soll aber nicht installiert werden" kommt), bekomme ich dann leider folgende Meldung:

    Wie kann man dieses Problem lösen?


    EDIT: Ich habe die nvidia-Version auf 440 angepasst. Dann komme ich einen Schritt weiter.

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    Im Aufbau: VDR-UHD mit nVidia GT1030 unter Ubuntu 20.04

    Einmal editiert, zuletzt von r371769 ()

  • Unter Ubuntu 20.04 kannst du das vdr-plugin-softhdcuvid aus dem PPA nehmen, der Umweg mit dem selber bauen für bionic war nur notwendig, weil die nvidia-Pakete nicht in den regulären Ubuntu-Paketquellen waren und zu sperrig sind, um sie in einem PPA abzulegen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • jojo61: Ich bekomme beim Make unter Ubuntu 20 folgenden Fehler (Quellen sind aktuell):

    Code
    video.c:5297:17: error: 'const struct pl_gpu' has no member named 'import_caps'
     5297 |     if (!(p->gpu->import_caps.tex & PL_HANDLE_DMA_BUF)) {
          |                 ^~
    video.c:5297:37: error: 'PL_HANDLE_DMA_BUF' undeclared (first use in this function)
     5297 |     if (!(p->gpu->import_caps.tex & PL_HANDLE_DMA_BUF)) {
          |                                     ^~~~~~~~~~~~~~~~~
    make: *** [<builtin>: video.o] Error 1

    Was mache ich falsch?

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    Im Aufbau: VDR-UHD mit nVidia GT1030 unter Ubuntu 20.04

  • Unter Ubuntu 20.04 kannst du das vdr-plugin-softhdcuvid aus dem PPA nehmen, der Umweg mit dem selber bauen für bionic war nur notwendig, weil die nvidia-Pakete nicht in den regulären Ubuntu-Paketquellen waren und zu sperrig sind, um sie in einem PPA abzulegen.

    ok, das wäre sehr hilfreich :). Sind in dem aktuellen Paket die skindesiger-Patches drin?


    Der Hintergrund ist, dass ich ein Darstellungsproblem mit softhdcuvid habe, wenn das Kanal-Menü ausgeblendet wird. Dann bleibt der untere Rand im Bild stehen.

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    Im Aufbau: VDR-UHD mit nVidia GT1030 unter Ubuntu 20.04

  • Sind in dem aktuellen Paket die skindesiger-Patches drin?

    Welche Patches meinst du genau?


    Der Patch in den Sourcen von softhdcuvid (https://github.com/jojo61/vdr-…es/skindesigner_patch.txt) wurde soweit ich das sehen kann mit diesem Commit ins vdr-plugin-skindesigner integriert: https://projects.vdr-developer…4eb3364b61deb67f4a79ee29e

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Was mache ich falsch?

    Vermutlich hast du nicht alle nötigen Pakete installiert, die zum Bauen benötigt werden. Das ist ja noch mal mehr geworden - hier mal die Build-Depends aus der debian/control von softhdcuvid unter focal:

    nv-codec-headers-dev und eine aktuelle libplacebo stecken in ppa:yavdr/experimental-main

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!