[patches] xine-lib-1.2+xineliboutput+xine-plugin verbesserter vdr support

  • Ich habe noch ein Problem entdeckt. Es ist mit dem changeset 11645 "Complete rewrite of vdpau output driver osd handling".
    Folgender Test: Wiedergabe einer Aufnahme von arte HD. Ich drücke "OK" und die Fortschrittsanzeige erscheint.
    Ohne changeset 11645 gibt es keine skipped frames [1]. Mit changeset 11645 gibt es skipped frames [2].
    Das heisst changeset 11645 verursacht bei mir skipped frames.
    Joerg


    [1]

    Code
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0


    [2]

    Code
    video_out: throwing away image with pts 6213437 because it's too old (diff : 2538).
    video_out: throwing away image with pts 6271037 because it's too old (diff : 2508).
    vdr: osdflush: n: 7, 70.8, timeout: 0, result: 0
    ...
    video_out: throwing away image with pts 6559037 because it's too old (diff : 2521).
    vdr: osdflush: n: 7, 70.4, timeout: 0, result: 0
    200 frames delivered, 0 frames skipped, 9 frames discarded
    vdr: osdflush: n: 2, 20.1, timeout: 0, result: 0
  • traxanos


    Dass ist aber sehr seltsam dass es genau an diesem Patch liegen soll.
    Der Patch 06 "Support for new continuous video frame grabbing feature for vdr input plugin" dürfte sich nur in Verbindung mit dem vdr xine plugin auswirken.
    xineliboutput hat ein eigenes input plugin und verwendet das vdr input plugin nicht.
    Zudem rüstet der Patch nur das grabbing nach, wirkt sich also auch nur aus wenn ein grabbing aktiv ist.


    Gruss
    durchflieger

  • Zitat

    Original von durchflieger
    Der Patch 06 "Support for new continuous video frame grabbing feature for vdr input plugin" dürfte sich nur in Verbindung mit dem vdr xine plugin auswirken.


    Xineliboutput benötigt den Patch auch, sonst funktioniert das Grabbing nicht. Ohne den Patch verabschiedet sich der VDR beim ersten Aufruf der GrabImage-Funktion mit einem Seg-Fault.


    Gruß
    e9hack

  • Zitat

    Original von durchflieger
    jrie
    kannst du bitte mal deine genaue Systemumgebung beschreiben.
    Hast du LOCKDISPLAY aktiviert?
    Es gibt auch eine Meldung bezüglich dieses Problem im xinedevel. Ist die auch von dir?


    vdr 1.7.17
    vdr-xine 0.9.4
    nvidia 195.30
    openSuSE 11.3
    Pentium III-S @ 1575 MHz
    GeForce 8400 GS (PCI)
    kein LOCKDISPLAY
    Die Meldung auf xine-devel ist von mir.

  • Mit dem "df-xine-lib-1.2-r11658-extensions-v23.diff" lässt sich bei mir xineliboutput aus dem git nicht bauen.
    Der Compiler bricht mit folgendem Fehler ab.



    Code
    ....
    g++ -O3 -pipe -Wall -Woverloaded-virtual -fPIC -g -fPIC -march=core2 -O2 -mtune=generic -pipe -D__STDC_CONSTANT_MACROS -ggdb -O0 -fPIC -fvisibility=hidden -shared -g -ggdb -O0 xineliboutput.o device.o frontend.o osd.o config.o menu.o setup_menu.o menuitems.o media_player.o equalizer.o frontend_local.o frontend_svr.o tools/cxsocket.o tools/udp_pes_scheduler.o tools/backgroundwriter.o tools/playlist.o tools/http.o tools/vdrdiscovery.o tools/time_pts.o tools.o tools/metainfo_menu.o logdefs.o tools/rle.o black_720x576.o nosignal_720x576.o vdrlogo_720x576.o -lrt -lextractor -lcap -ldl -o libvdr-xineliboutput.so.1.7.16
    cc -O3 -pipe -Wall -fPIC -g -fPIC -march=core2 -O2 -mtune=generic -pipe -D__STDC_CONSTANT_MACROS -g -ggdb -O0 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DUSE_ALTERNATECHANNEL -DUSE_CHANNELBIND -DUSE_CHANNELPROVIDE -DUSE_CUTTERLIMIT -DUSE_CUTTIME -DUSE_DDEPGENTRY -DUSE_DVLSCRIPTADDON -DUSE_GRAPHTFT -DUSE_HARDLINKCUTTER -DUSE_JUMPINGSECONDS -DUSE_JUMPPLAY -DUSE_LIEMIEXT -DUSE_LIRCSETTINGS -DUSE_LNBSHARE -DUSE_MAINMENUHOOKS -DUSE_MCLI -DUSE_MENUORG -DUSE_NOEPG -DUSE_PINPLUGIN -DUSE_PLUGINMISSING -DUSE_ROTOR -DUSE_TIMERINFO -DUSE_TTXTSUBS -DUSE_VALIDINPUT -DUSE_VOLCTRL -DUSE_WAREAGLEICON -DUSE_YAEPG -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"xineliboutput"' -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DXINELIBOUTPUT_VERSION='"1.0.90-cvs"' -Wall -I/usr/local/src/DVB/include -I/usr/local/src/VDR/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -o xine_sxfe_frontend.o xine_sxfe_frontend.c
    cc -O3 -pipe -Wall -fPIC -g -fPIC -march=core2 -O2 -mtune=generic -pipe -D__STDC_CONSTANT_MACROS -g -ggdb -O0 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DUSE_ALTERNATECHANNEL -DUSE_CHANNELBIND -DUSE_CHANNELPROVIDE -DUSE_CUTTERLIMIT -DUSE_CUTTIME -DUSE_DDEPGENTRY -DUSE_DVLSCRIPTADDON -DUSE_GRAPHTFT -DUSE_HARDLINKCUTTER -DUSE_JUMPINGSECONDS -DUSE_JUMPPLAY -DUSE_LIEMIEXT -DUSE_LIRCSETTINGS -DUSE_LNBSHARE -DUSE_MAINMENUHOOKS -DUSE_MCLI -DUSE_MENUORG -DUSE_NOEPG -DUSE_PINPLUGIN -DUSE_PLUGINMISSING -DUSE_ROTOR -DUSE_TIMERINFO -DUSE_TTXTSUBS -DUSE_VALIDINPUT -DUSE_VOLCTRL -DUSE_WAREAGLEICON -DUSE_YAEPG -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"xineliboutput"' -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DXINELIBOUTPUT_VERSION='"1.0.90-cvs"' -Wall -I/usr/local/src/DVB/include -I/usr/local/src/VDR/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -o xine_frontend.o
    gcc: keine Eingabedateien
    make: *** [xine_frontend.o] Fehler 1
    vdr01 xineliboutput-git #

  • Xineliboutput benötigt den Patch auch, sonst funktioniert das Grabbing nicht. Ohne den Patch verabschiedet sich der VDR beim ersten Aufruf der GrabImage-Funktion mit einem Seg-Fault.


    Gruß
    e9hack

    Kann nicht sein. Entweder meinen wir nicht den selben Patch oder du sprichst das input plugin des vdr xine plugin über die URL an was man aber aus dem xineliboutput besser wohl nicht macht.

  • läßt sich aber dauerhaft reproduzieren. ist er drinne läuft kein sender mehr. ist er draußen läuft wieder das bild.

    mfg traxanos
    ____________________
    Ist das neu?, Nein Linux!


    VDR1: Zotac NM10-ITX Wifi - 2GB Ram - S2-6400 HD mit IR - yavdr 0.4 (development) - LianLi PC-Q11


    Tags: VDR-HD - AT5IONT-I - 4GB Ram - 512MB ION - TT 3600 DVB-S2 - TT6400-FF - Sundtek DVB-S2 Sundtek DVB-C - Tevii S480 (dank an L4M für kostenlose Bereitstellung) - yaVDR 0.5 (development) - SKY - HD+ - Atric - X10 FB - Zotac ID41 PLUS - SilverStone LC19B-R - Yamaha RX-V671 - Samsung 8Series 55"

  • Zitat

    Original von durchflieger

    Kann nicht sein. Entweder meinen wir nicht den selben Patch oder du sprichst das input plugin des vdr xine plugin über die URL an was man aber aus dem xineliboutput besser wohl nicht macht.


    Und was ist dann das in xine_frontend.c:


    Gruß
    e9hack

  • Also ich gehe mal davon aus Ihr meint den Changeset 972b8e4d des Branch "df-xine-lib-extensions" des Projekt "xine-lib" auf vdr-developer.org???
    Wenn Ihr euch den Diff dort zum vorherigen Changeset anseht dann ändert dieser die Dateien "vdr.h" und "input_vdr.h".


    e9hack
    Die Sourcezeilen die du da aufzeigst sind Bestandteil des Sourcecode zum xineliboutput plugin. Der wird seitens des "df-xine-lib-extensions" Patch
    überhaupt nicht addressiert.

  • @ durchflieger


  • jrie


    dein Log ist schon mal sehr aufschlussreich.
    Ich vermute mal die Problemstellung ist mit dem vdr-xine-plugin Version 0.9.4 und dem geänderten OSD-Handling gekommen.
    In deinem Log wird das konkrete OSD-Image als "skalliertes" ARGB-Bitmap übergeben.
    Der "alte" OSD-Algorithmus ohne den "rewrite" Patch von mir hat ARGB-Bitmaps immer nur "unskalliert" verarbeitet.
    Mit dem Patch können ARGB-Bitmaps nun sowohl skalliert als auch unskalliert dargestellt werden (das ist ja der Fortschritt).
    Das zusätzliche skallieren passiert in der GPU und kostet wahrscheinlich die Rechenzeit die bei dir zu frame drops führen.
    Eigentlich ist das kein Problem des neuen Patch sondern ein fehlerhaftes kennzeichnen des OSD-Objekt seitens des
    vdr-xine-plugin.
    Ich hoffe Reinhard liest hier gerade mit und kann dazu vieleicht auch etwas sagen.


    Gruss
    durchflieger


  • e9hack
    Die Sourcezeilen die du da aufzeigst sind Bestandteil des Sourcecode zum xineliboutput plugin. Der wird seitens des "df-xine-lib-extensions" Patch
    überhaupt nicht addressiert.


    Vielleicht reden wir aneinander vorbei. Damit GrabImage() über xineliboutput funktioniert, wird der Patch 06 benötigt. Ohne diesen Patch kackt der Vdr mit einem Segmentation-Fault ab. Die originale Grab-Methode funktioniert mit vdpau nicht.


    Gruß
    e9hack


  • Vielleicht reden wir aneinander vorbei. Damit GrabImage() über xineliboutput funktioniert, wird der Patch 06 benötigt. Ohne diesen Patch kackt der Vdr mit einem Segmentation-Fault ab. Die originale Grab-Methode funktioniert mit vdpau nicht.


    Gruß
    e9hack


    Ich werde morgen mal versuchen mit dem ganz aktuellen Stand des xineliboutput das nachzuvollziehen.
    Nur noch mal zu Sicherheit. Es gibt ja zwei Patches in folge:


    Code
    a) Continuous video frame grabbing feature.
    b) Support for new continuous video frame grabbing feature for vdr input plugin.


    Ihr meint definitiv den b)??
    Der a) ist eigentlich derjenige der für die grabbing Funktion auch für das xineliboutput notwendig ist.


  • Ich werde morgen mal versuchen mit dem ganz aktuellen Stand des xineliboutput das nachzuvollziehen.
    Nur noch mal zu Sicherheit. Es gibt ja zwei Patches in folge:


    Code
    a) Continuous video frame grabbing feature.
    b) Support for new continuous video frame grabbing feature for vdr input plugin.


    Ihr meint definitiv den b)??
    Der a) ist eigentlich derjenige der für die grabbing Funktion auch für das xineliboutput notwendig ist.


    Ich habe die einzelnen Patches nicht auseinandergenommen. Ohne Deinen 'vollständigen' Patch erzeugt der GrabImage()-Aufruf unter Verwendung von xineliboutput und xine-lib mit vdpau einen Seg-Fault. Mit Patch läuft alles super. Ich verwende im aurora-Plugin GrabImage(). Für mich must Du aber nicht aufdröseln, welcher der Einzelpatches GrabImage() funktionieren läßt.


    Gruß
    e9hack

  • @ durchflieger
    Mit vdr-xine 0.9.3 dasselbe, siehe Anhang.
    Ein Unterschied im OSD ist mir nicht aufgefallen.
    Meine Bildschirm Auflösung ist 1920x1080, meine OSD Auflösung nur 720x576 mit auto einpassen, da bei größerer OSD Auflösung das OSD zu träge wird.
    Wenn ich testweise das OSD auf 1920x1080 stelle, habe ich keine framedrops mehr. Auch wenn ich X11 overlay verwende habe ich keine framedrops mehr. Aber dann ist das OSD entweder zu klein (720x576) oder auch zu träge (1920x1080).
    Also ohne OSD skalieren keine framedrops.
    Warum das am vdr-xine-plugin liegen soll, habe ich nicht verstanden. Würdest du das mal näher erklären, was du mit "fehlerhaftes kennzeichnen des OSD-Objekt" meinst?

  • jrie


    deine Beobachtungen sind alle korrekt!
    Ich habe mir das ganze nochmal angeschaut und muss feststellen dass das "alte" OSD-Handling durchaus in der Lage ist auch ARGB-Bitmaps zu skalieren.
    Das vdr-xine-plugin scheint zur Zeit auch nur immer 1 OSD-Objekt gleichzeitigt auszugeben und damit funktioniert die Skallierung auch wunderbar und
    offensichtlich auch etwas effizienter im "alten" Handling gegenüber dem "neuen" OSD Handling. Also hat das vdr-xine-plugin auch keinen Fehler diesbezüglich.


    Da ich noch weitere mögliche Probleme mit Inkompatibilitäten zwischen alten/neuen OSD-Handling identifiziert habe werde ich veranlassen das der Patch
    erstmal wieder aus der xine-lib (und dann auch dem df-extensions-patch) rausfliegt.


    Gruss durchflieger

  • Hallo durchflieger,
    vielen Dank, dass du das Problem aufgedröselt hast!
    Jörg


    PS: Das bestätigt übrigens im Nachhinein die Beobachtungen vieler Forenteilnehmer mit der Gf 8400 GS (link).

Jetzt mitmachen!

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