[yavdr-ansible] noble vdr 2.6.9 RasPi 4

  • Ich habe mal versucht auf meinen RasPi 4 unter Ubuntu 24.04 (Server Image) VDR zu installieren.

    Leider ohne Erfolg, habe weder Bild noch Ton, weder aus Aufnahmen, noch über SAT-IP.

    Das Menü kommt, sobald ich irgendwas abspielen will, hängt sich VDR komplett weg.

    Hat jemand eine Idee ? Hat das überhaupt schon mal jemand erfolgreich auf einem RasPi 4 zum Laufen gebracht ?

  • Ich bin inzwischen mit den Tests, insbesondere im Vergleich mit MLD, ein wenig weiter gekommen:

    Wenn ich die HD Sender aus der channel.conf lösche, kann ich SD Sender und SD Aufnahmen abspielen (Software Decoded). Sobald ich eine HD Aufnahme (GPU Decoded) abspiele, hängt der VDR.

    Am softhddevice-drm-gles kann es eigentlich nicht liegen, bei MLD funktioniert das. Also kann es nur an den FFmpeg Libs liegen. MLD scheint hier eine spezielle RasPi Version aus Debian zu nutzen.

  • Ich bin inzwischen mit den Tests, insbesondere im Vergleich mit MLD, ein wenig weiter gekommen:

    Wenn ich die HD Sender aus der channel.conf lösche, kann ich SD Sender und SD Aufnahmen abspielen (Software Decoded). Sobald ich eine HD Aufnahme (GPU Decoded) abspiele, hängt der VDR.

    Am softhddevice-drm-gles kann es eigentlich nicht liegen, bei MLD funktioniert das. Also kann es nur an den FFmpeg Libs liegen. MLD scheint hier eine spezielle RasPi Version aus Debian zu nutzen.

    kfb77 https://github.com/LibreELEC/L…ackages/multimedia/ffmpeg wird von VDR*ELEC benutzt. 6.0.1 und die Patches vom rpi Verzeichnis. Du solltest dann auf diese Version von https://github.com/jc-kynesim/…/commits/test/6.0.1/main/ kommen. Bei jc-kynesim findest du die aktuelle Entwicklung für ffmpeg auf RPi.


    EDIT: In der package.mk bei LE siehst du auch, wie die ihr ffmpeg bauen.

  • Danke, dann war mein Verdacht richtig.

    Ich habe das ganze nur installiert, weil ich in markad den hwaccel Decoder für H.264 auf dem RasPi 4 nicht hinbekommen hatte. Ich habe ihn dann mal mit deinem Plugin verglichen und keinen wesentlichen Unterschied festgestellt.

    Weist du, ob das alles irgendwann in FFmpeg master integriert wird ?


    seahawk1986 : Siehst du da eine Change da in yaVDR für RasPi 4 reinzubauen ?

  • seahawk1986 : Siehst du da eine Change da in yaVDR für RasPi 4 reinzubauen ?

    Wenn du mir sagst, mit welchen Patches, Defines und Flags man das ffmpeg bauen muss, damit es funktioniert kann ich mich an einem Paket versuchen - mangels passender Hardware ist das sonst ein ziemlich langwieriges Unterfangen, weil Launchpad für ARM Builds oft sehr lange braucht.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Weist du, ob das alles irgendwann in FFmpeg master integriert wird ?

    Nein. Aber ffmpeg scheint da sehr träge zu sein. Die v4l2-request API z.B. gibts schon seit Jahren und die ist aus verschiedenen Gründen auch nicht drin. Darum bastelt sich LE ffmpeg mit den Patches. Ich hab das hw decoding von markad etwas verfolgt, aber steig nicht ganz durch. Potentielle Kandidaten dafür wären z.B. auch Rockchip, Allwinner oder Amlogic...

  • OK, ich schaue mir das an, sobald ich meinen RasPi 4 wieder frei habe. Zur Zeit läuft da MLD drauf.

  • Potentielle Kandidaten dafür wären z.B. auch Rockchip, Allwinner oder Amlogic

    Kann ich leider mangels HW nicht selber testen. Log Files sind immer willkommen.

  • Code
    ffmpeg -buildconf

    Wäre da interessant (gerne auch von einem LibreElec).


    PS: Das Paket bei MLD scheint recht alt zu sein: https://www.minidvblinux.de/gi…e9e80f82e4eeb0&f=Makefile und LE ist leicht hinter dem ffmpeg 6.1.1, das in Ubuntu 24.04 dabei ist: https://github.com/LibreELEC/L…timedia/ffmpeg/package.mk

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Kann ich leider mangels HW nicht selber testen. Log Files sind immer willkommen.

    Wo finde ich Infos dazu, wie ich das am besten mache?

  • Code
    ffmpeg -buildconf

    Wäre da interessant (gerne auch von einem LibreElec).


    PS: Das Paket bei MLD scheint recht alt zu sein: https://www.minidvblinux.de/gi…e9e80f82e4eeb0&f=Makefile und LE ist leicht hinter dem ffmpeg 6.1.1, das in Ubuntu 24.04 dabei ist: https://github.com/LibreELEC/L…timedia/ffmpeg/package.mk

    https://github.com/jc-kynesim/rpi-ffmpeg/branches hätte auch patches für 6.1.1 und 7...

  • buildconf auf VDR*ELEC (= fast LibreELEC):

  • Sry, das ist rockchip ;) Hier der RPI4:

  • Wo finde ich Infos dazu, wie ich das am besten mache?

    Im Wiki, Log File am besten so, zusätzlich den Parameter --hwaccel=<Methode>, was von deiner Hardware und deinem FFmpeg unterstützt wird.

    --hwaccel=drm wird aber noch nicht gehen, weil das einen anderen Decoder verwendet und markad das aktuell nicht unterstützt. Aber warum erzähle ich das, kannst das ja selber in deinem Ausgabe Plugin nachsehen ...

  • Jetzt crashe ich wahrscheinlich deinen Thread...

    Ich verstehs noch nicht ganz ;)

    Auf dem rockchip gibts für h264 den h264_v4l2m2m hw decoder. Ich komme aber hier https://github.com/kfb77/vdr-p…/command/decoder.cpp#L107 schon nicht weiter wg. drm. Was würde denn dafür fehlen? In softhddevice-drm-gles gibts die Abfrage av_hwdevice_find_type_by_name() z.B. gar nicht. Das sucht sich den richtigen decoder später selbst je nach codec.

  • Ist bei RasPi 4 auch so und ja genau, darum geht das noch nicht. VAAPI braucht das nicht, das funktioniert mit dem normalen H.264 Decoder.

    Damit teste ich gerade (hard coded).

    Code
            if (useHWaccel) codec = avcodec_find_decoder_by_name("h264_v4l2m2m");
            else codec = avcodec_find_decoder(codec_id);

    Habe aber noch ein Problem mit der Loop um:

    Code
    const AVCodecHWConfig *config = avcodec_get_hw_config(codec, i);

    Debug Output:

    Code
    Decoder::InitDecoder(): codec h264_v4l2m2m , config->methods 4, hwDeviceType 8 drm, config->device_type 0 (null), pixel format 179 drm_prime

    Warum kommt da bei config->device_type nichts ??? Bei VAAPI bekomme ich die ID von VAAPI.

    Du fragst das aber auch ab:

    vdr-plugin-softhddevice-drm-gles/codec.c at 4c85964f56682c9d73a72731916f742340ed308e · rellla/vdr-plugin-softhddevice-drm-gles
    drm fork. Contribute to rellla/vdr-plugin-softhddevice-drm-gles development by creating an account on GitHub.
    github.com

  • Mit v4l2m2m bin ich schon im ersten Teil der if Abfrage und frage den hw context nicht ab. So auf die Schnelle...

    vdr-plugin-softhddevice-drm-gles/codec.c at 4c85964f56682c9d73a72731916f742340ed308e · rellla/vdr-plugin-softhddevice-drm-gles
    drm fork. Contribute to rellla/vdr-plugin-softhddevice-drm-gles development by creating an account on GitHub.
    github.com

  • :wand

    Ja klar, das nächste Problem wäre

    cfg->methods & AV_CODEC_HW_CONFIG_METHOD

    geworden, das Flag ist auch nicht gesetzt.

    Also bei DRM alles ignorieren.

    Ich habe die Prüfung auskommentiert, damit habe ich den ersten markad Lauf hinbekommen.

    Habe noch ein zwei Punkte offen:

    1. ich bekomme beim Logo extrahieren noch interne Fehlermeldungen mit ungültigen Bildern, die ich nicht verstehe, beim Logo erkennen sind die aber weg. Kann also nicht am Decoder liegen.

    2. bei VAAPI, CUDA, Vulkan, ... bekomme ich NV12 Pixel Format von der GPU zurück, bei DRM yuv420p. Eigentlich ja gut, weil ich verarbeite yuv420p intern weiter. Leider kann das mein Code (noch) nicht, beim GPU Decodieren kein Konvertieren des Pixel Formats zu machen, also konvertiere ich aktuell yuv420p zu yuv420p. Nicht sinnvoll.


    es wird ....

    Jetzt crashe ich wahrscheinlich deinen Thread...

    Nein gar nicht, genau das war mein Grund diesen Thread aufzumachen, ich wollte eine funktionierende Testumgebung um mit den HW Decoding unter DRM weiter zu kommen. Vielen Dank für deine Unterstützung.

  • Hier mal ein erster Performance Vergleich Soft-/Hardware decoded auf dem RasPi 4

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!