[softhddevice-drm]

  • Dieser Aufruf https://github.com/rellla/vdr-…b17d75ebde14/Makefile#L79 muss den richtigen Pfad finden.

  • ich hab jetzt mal die include Pfade anzeigen lassen..


    kann man da die Reihenfolge ändern ??? so wie es aussieht nimmt er halt zuerst die falschen Dateien

  • Die Ausgabe von


    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config --cflags --libs libavfilter libavcodec


    ist


    -I/usr/local/include -L/usr/local/lib -lavfilter -lavcodec


    Hm irgendwie möchte er wohl avcodec aus usr/local/lib nehmen hat aber beim Kompilieren den aus /lib/aarch64-linux-gnu/ genommen :/

    Einmal editiert, zuletzt von JoeBar ()

  • Das passt ja. Wenn du dein FFMPEG mal mit "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure etc." neu konfigurierst und kompilierst, müsste es doch passen, wenn du danach mit LD_LIBRARY_PATH=/usr/local/lib startest?!


    EDIT: Ich meine natürlich, den VDR mit dem PKG_CONFIG_PATH zu bauen, und dem LD_LIBRARY_PATH zu starten.

  • Ich werde es mal versuchen. Melde mich danach ob es geklappt hat. Danke erst mal :)

  • Noch ne kurze Frage, LD_LIBRARY_PATH=/usr/local/lib also beim Kompilieren von softhddevice voranstellen oder?

  • Ah ok, dann könnte es doch am vdr selber liegen. Den hat nähmlich launchpad aus den yaVDR Quellen für arm64 gebaut dann vermutet er standartmäßig die Libs an anderer Stelle oder?

  • Noch ne kurze Frage, LD_LIBRARY_PATH=/usr/local/lib also beim Kompilieren von softhddevice voranstellen oder?

    Auf jeden Fall PKG_CONFIG_PATH. Ich weiß nicht, ob der linker die richtige lib ohne LD_LIBRARY_PATH findet, also evtl sicherheitshalber auch.

  • Ah ok, dann könnte es doch am vdr selber liegen. Den hat nähmlich launchpad aus den yaVDR Quellen für arm64 gebaut dann vermutet er standartmäßig die Libs an anderer Stelle oder?

    Da weiß ich nicht, wie die Pfade von vdr und den plugins zusammenhängen. Ich baue die plugins immer aus dem VDR Verzeichnis heraus mit demselben Befehl bzw. env Variablen. Nach meinem Verständnis sollte der Pfad von ffmpeg mit VDR selbst nichts zu tun haben, denn die ffmpeg libs werden ja nur von softhddevice benötigt.

  • Klappt irgendwie nicht :(


    Ich werde jetzt mal ffmpeg so kompilieren wie der yavdr vdr das erwartet

    Code
    --prefix=/opt/ffmpeg \
            --libdir=/opt/ffmpeg/lib/ \
            --enable-shared \
  • die ffmpeg libs werden ja nur von softhddevice benötigt.

    av_gcd_q ist eine Funktion die von libavfilter gesucht aber nicht gefunden wird. Die Funktion sollte in der libavutil sein. Da ist bei der Installation von FFmpeg was schief gegangen. softhddevice-drm nutzt die Funktion nicht.

    Seltsamerweise funktionier ja das softhddevice-drm Plugin wenn ich den VDR nach meiner Anleitung aufsetze. Nur mit yaVDR den ich mit ansible installiere nicht.

    Dann scheint der VDR auf die avfilter zugreifen zu wollen wenn er das Plugin läd und bricht dann ab.

  • Also das Plugin scheint jetzt zu starten ;) jetzt muss ich mich noch um alsa kümmern.

    Evtl. wäre es auch mit dem vorherigen ffmpeg gegangen. Ich musste noch im vdr.service file Environment=LD_LIBRARY_PATH=/opt/ffmpeg/lib eintragen dann lief's :) Vorher hat der VDR rumgemeckert dass er libavfilter shared Datei nicht finden konnte.

  • Scheint, als fehlt irgendwo ein free beim Senderwechsel, als erste Vermutung.

    Ich versuche grad, ob sich mit valgrind was rausfinden lässt. Aber das ist ziemlich lahm...


    EDIT: Ich glaube, valgrind funktioniert nicht mit CMA...

    Einmal editiert, zuletzt von rell ()

  • Unkommentiertes valgrind log:

    https://pastebin.com/raw/ssX3WRqg

    Evtl. sind die Meldungen am Ende interessant, schaue ich mir später mal genauer an.

  • Bei mir kommt der VDR ins Straucheln wenn ich vor dem Schneiden die Schnittmarken anpasse und dabei mit Taste 9 durch den Film zappe. Irgendwann fängt dann die Wiedergabe an zu stocken und wenn man dann noch ein zweimal auf die 9 drückt schmiert der VDR ab, wenn man aber aufhöhrt zu drücken kann man ganz normal durch das OSD navigieren.


    Ich hab mal mein Syslog mit angehängt vieleicht hilf es weiter ;)

    Dateien

    Einmal editiert, zuletzt von JoeBar ()

  • Das ist das gleiche Problem wie es Andreas beschrieben hat. Der Deinterlacer wird mehrfach neu gestartet und der Buffer wird nicht freigegeben. Ich bin da dran. Ein von ffmpeg mit av_buffer_create() erzeugter Buffer hat ein callback der nicht ausgeführt wird. Warum weiss ich noch nicht.

  • Danke, werds gleich testen.


    Sehr witzig, weil ich auch grad vor 5 Minuten denselben Code innerhalb der while(1) Schleife getestet habe und er zu funktionieren scheint. Nur an render->Closing und render->Filter_Close habe ich nichts verändert ;)


    Möchtest du ein mißlungenes av_frame_alloc hier https://github.com/zillevdr/vd…4a0789dd34a21abaa7e1R1324 auch noch abfangen?

    ... und noch 2 kleine Dinge:

    https://github.com/zillevdr/vd…blob/drm/video_drm.c#L332 hier fehlt ein free() und https://github.com/zillevdr/vd…blob/drm/video_drm.c#L326 hier müsste ein return rein, damit es später keinen segfault gibt.

  • Hi zillerbaer, ich habe noch einen Bug gefunden:

    https://pastebin.com/raw/1qcTXmb2

    Ich kann das nur bedingt reproduzieren. Das passiert irgendwann, wenn ich zappe. Mal nach 20x, mal nach 50x


    Vielleicht kannst du damit was anfangen.


    EDIT: Ich habe hier ein sleep(1) eingefügt, da mir das log sonst davon läuft. Ganz am Schluss versuche ich nochmal einen Kanal zu wechseln, dann schmiert er ab.

    EDIT2: Der segfault kommt daher, weil frame hier NULL ist.

    Einmal editiert, zuletzt von rell ()

  • Sehr witzig, weil ich auch grad vor 5 Minuten denselben Code innerhalb der while(1) Schleife getestet habe und er zu funktionieren scheint. Nur an render->Closing und render->Filter_Close habe ich nichts verändert

    Das ist nur hübsch machen. Die wichtige Änderung ist das erst die AVFrames freigegeben werden müssen und danach der Filter. Hinter AVFrame verbergen sich v4l2-buffer.

    Möchtest du ein mißlungenes av_frame_alloc hier https://github.com/zillevdr/vd…4a0789dd34a21abaa7e1R1324 auch noch abfangen?

    Nö.

    ... und noch 2 kleine Dinge:

    Theoretisch ja, praktisch wird nicht gebootet wenn die Datei leer ist.

    Hi zillerbaer, ich habe noch einen Bug gefunden:

    Wo kommen die Daten her? Der Decoder will die schon nicht haben:

    Code
    CodecVideoSendPacket: send_packet ret: Invalid data found when processing input

    Schau ich noch mal genauer hin. Evtl. fang ich das noch ab.

Jetzt mitmachen!

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