sunxi-vdpau WIP (ehemals interlaced branch)

  • XTranslateCoordinates ist auch ein Performancekiller.
    Da wird ein Befehl an X11 geschickt und auf die Antwort gewartet.


    Die Frage ist kann man eine eigene X11 Verbindung für VDPAU verwenden und bekommt dann eine eigene Event Queue?


    Vorerst müsste man do_presentation_queue_display umbauen, daß es ein globales Flag "PositionChenged" gibt und die Position in der Queue gespeichert wird. Bzw. wäre WindowChanged besser man braucht Größe und Position.


    Edit: Sehe gerade vdpau-sunxi macht es bereits, dann braucht man nur den Setup für Events einbauen und dann diese abholen.
    Damit kann man dann auch XClearWindow dort einbauen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

    Einmal editiert, zuletzt von johns ()

  • Ich habe irgendwann mal mit dem Patch unten auf dem master branch experimentiert, ist schon ne weile her und lief auch nie richtig, aber vielleicht hilft es als Idee wie ich das mit XClearWindow/XTranslateCoordinates lösen wollte.



    EDIT: XClearWindow kann dann im loop glaube ich sogar entfallen, bei ExposeEvents wird laut "XLIB Reference Manual R5" automatisch "gecleart".

  • I
    EDIT: XClearWindow kann dann im loop glaube ich sogar entfallen, bei ExposeEvents wird laut "XLIB Reference Manual R5" automatisch "gecleart".


    So habe ich es auch im Kopf. Aber schon ewig kein X11 Anwendercode mehr geschrieben.


    Der Code schaut so richtig aus. Man braucht noch die Grö0e, des Fensters.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Anbei ein Patch für Fenster verschieben und vergrößern. Patch ist gegen https://github.com/rellla/libvdpau-sunxi branch DEV.


    Wenn man mit der Maus resized, dann sollte man danach warten. Bild kommt nach ein paar Sekunden.


    Edit: war noch ein kleiner Fehler drin, bitte wer V3 geholt hat, neue V4 holen.


    Johns

    Dateien

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

    Einmal editiert, zuletzt von johns ()

  • Pushed nach https://github.com/rellla/libvdpau-sunxi/tree/dev
    Wer die CSC Funktionalität prüfen will, kann das hiermit tun. Baut auf dev auf. Aber Kernel Patch nicht vergessen!


    Gruß Andreas

  • Funktioniert nicht richtig:
    Die Videoausgabe folgt nicht einer Größenänderung des Fensters! Getestet mit mplayer + Branch dev.

  • Dann machst du etwa falsch.


    Habe gerade neusten Branch ausgecheckt und installiert. Und mit mpv getestet.


    Code
    545  export VDPAU_OSD=1;
      546  export VDPAU_DEINT=1;
      547  export DISPLAY=:0.0
      548  export VDPAU_DRIVER=sunxi
      549  mpv -vo vdpau /var/vdr/video/\@Das_Erste_HD/2015-03-20.12.58.1-0.rec/00001.ts


    Funktioniert, etwas träger als softhddevice aber funktioniert.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ich mache nix falsch! :wand
    1. Größenänderung des Fensters -> keine Größenänderung der Videoausgabe.
    2. Zusätzlich Verschieben des Fensters -> Nun wird die Größe angepasst.


    Leute, mir ist das langsam zu mühsam.


    Ich verwende einfach weiter meinen Patch, der funktioniert nämlich.

  • Es funktioniert hier. Was für einen komischen Fenstermanager nimmst du?


    Edit: gerade ist fluxbox fertig gebaut, mit diesem funktioniert es auch.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

    Einmal editiert, zuletzt von johns ()

  • Da läuft LXDE, was beim Banana Pi Linuxverschnitt halt mitkommt.


    Ich glaube jedoch nicht, dass es am WM liegt, denn im X-Event stehen die richtigen Werte für width und height.
    Dagegen sind die Werte, die in scn_win gesetzt werden, falsch. Dies scheinen die Werte vor der Größenänderung zu sein.


    Dennoch funktioniert softhddevice, nicht aber mplayer. Verstehe ich nicht.


    Debugausgaben mit mplayer (leichtes Vergrößern des Fensters):
    [VDPAU SUNXI] 0x1c00001 0x1c00001 773x434+2+23
    [VDPAU SUNXI] Offset x: 65, y: 84
    [VDPAU SUNXI] LayerSCN - x0: 65, width: 617, y0: 84, height: 347
    [VDPAU SUNXI] OutputDST - x0: 0, width: 617, y0: 0, height: 347
    [VDPAU SUNXI] LayerSRC - x0: 0, width: 1280, y0: 0, height: 720
    [VDPAU SUNXI] VideoSRC - x0: 0, width: 1280, y0: 0, height: 720


    Wenn ich nun scn_win.width/height mit den Werten aus dem X-Event versorge, funktioniert mplayer einwandfrei.
    Leider funktioniert dann das ganze mit softhddevice (manchmal) nicht mehr richtig.


    Ich verstehe nicht, wieso softhddevice mit dem aktuellen Code funktioniert. Wird der Wert in scn_win hier im Gegensatz zu mplayer ignoriert oder später überschrieben?


    Debugausgaben mit softhddevice (leichtes Vergrößern des Fensters):
    [VDPAU SUNXI] 0x1c00003 0x1c00003 857x608+2+23
    [VDPAU SUNXI] Offset x: 161, y: 258
    [VDPAU SUNXI] LayerSCN - x0: 161, width: 796, y0: 319, height: 448
    [VDPAU SUNXI] OutputDST - x0: 0, width: 796, y0: 61, height: 448
    [VDPAU SUNXI] LayerSRC - x0: 0, width: 1280, y0: 0, height: 720
    [VDPAU SUNXI] VideoSRC - x0: 0, width: 1280, y0: 0, height: 720


    Für mich ist das Voodoo...


    CU
    Oliver

  • Die Werte für Breite und Höhe werden nicht ausgewertet.


    SoftHdDevice verändert die Ausgabe um diese an die Änderungen anzupassen.
    mpv scheint es genauso zutun, mir ist bei der Fenstergröße Änderung nichts aufgefallen.
    Werde aber Morgen nochmal darauf achten.


    Also SoftHdDevice bekommt seinen eigenen Event und passt seine und die VDPAU Ausgabe an die veränderte Größe an.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Die Werte für Breite und Höhe werden nicht ausgewertet.


    Habe ich gesehen, und probehalber mal geändert. S.o.


    Zitat


    SoftHdDevice verändert die Ausgabe um diese an die Änderungen anzupassen.
    mpv scheint es genauso zutun, mir ist bei der Fenstergröße Änderung nichts aufgefallen.
    Werde aber Morgen nochmal darauf achten.


    mplayer tut dies offensichtlich nicht.


    Zitat


    Also SoftHdDevice bekommt seinen eigenen Event und passt seine und die VDPAU Ausgabe an die veränderte Größe an.


    Definiert X das so? Ich finde es unlogisch, wenn Größenanpassung in der Applikation, die Positionsanpassung aber im Treiber stattfindet. Entweder alles im Treiber oder alles in der Applikation. Hatte schon fast vergessen, wieso ich dieses GUI-Zeug so hasse... :D


    CU
    Oliver

  • Hallo,


    mit Auskommentieren, d.h. Abfragen und Setzen von sc_win.width und scn_win.height lief hier gestern mpv und softhddevice mit Positions- und Größenänderungen (unter lxde).
    Unmapping führt über DISP_CMD_LAYER_CLOSE. Vorher die aktuellen Werte in q->target->drawable_*** speichern und ein Flag setzen.
    Beim Mapping dann die Werte wieder auslesen + DISP_CMD_LAYER_OPEN.
    Ein

    Code
    if(flag_unmapped)
         return VDP_STATUS_OK;


    beendet die Darstellung dann unverrichteter Dinge.
    Der Ansatz dazu hat funktioniert, leider bin ich nicht ganz fertig geworden damit und hab den Code grad nicht zur Hand.


    Gruß
    Andreas


  • Definiert X das so? Ich finde es unlogisch, wenn Größenanpassung in der Applikation, die Positionsanpassung aber im Treiber stattfindet. Entweder alles im Treiber oder alles in der Applikation. Hatte schon fast vergessen, wieso ich dieses GUI-Zeug so hasse... :D


    Naja die Anwendung muß schon darauf reagieren. In unserem Fall, muß das OSD angepasst werden.
    Und welchen Darstellungsmodus (Zoom, Pan&Scan und Center cut-out) du gewählst hast, weiß nur die Anwendung.


    An dieser Stelle kann man auf die Größeveränderung reagieren, aber im Normalfall reagiert man falsch.


    Und was passiert, wenn die Anwendung bereits reagiert hat und dann libvpau-sunxi erst den Event bekommt und reagiert?
    Diesen Fall muß man umbedingt behandeln.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Es muß jedoch irgendwo exakt spezifiziert sein, wer/wann/wie auf X-Events zu reagieren hat?


    Dass es mit dem zusätzlichen Setzen im Treiber bei softhddevice manchmal zu einer Fehldarstellung kommt, hatte ich ja oben schon beschrieben. Liegt vermutlich an der dann doppelten Bearbeitung des Events in falscher Reihenfolge.


    CU
    Oliver

  • Das Problem ist kein X11 sondern ein VDPAU Problem.
    Hier wird an X11 vorbei die Hardware angesprochen.


    Ich habe mal den Configure aus SoftHdDevice ausgebaut.
    Und wenn man NVidia VDPAU als Referenz nimmt, reagiert die auf Größenveränderung.
    Wird das Fenster kleiner, dann wird das Video am Fenster abgeschnitten, wird es wieder größer erscheint der abgeschnitte Teil wieder.
    Wird das Fenster größer, ist der vergrößerte Bereich einfach schwarz.


    Ich denke mal die Größenveränderung wird duch den "Colorkey" gedeckt.


    So ich habe mplayer und mpv auf NVidia getestet. Beide reagieren auf eine Größenveränderung.
    Das heisst mplayer wertet die Events aus und verändert das Videobild entsprechend.
    Leider baut der mplayer auf ARM nicht, um dort zuchecken was er macht.


    Also mplayer müsste bei dir das Videobild an die geänderte Fentergröße anpassen ohne das man im libvdpau-sunxi irgendwas macht.
    Entweder liegt es an mplayer-1.2_pre20150214 oder ldxe oder libvdpau-sunxi.


    Ich gucke mal in den Sourcecode von mplayer was die bei Fenstergrößenänderung machen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Auf ARM habe ich mplayer 1.1.1 kompiliert. Ein aktueller Snapshot ließ sich nicht kompilieren...


    CU
    Oliver

  • Hallo,


    ich habe hier das ganze nochmal etwas weitergemacht.
    Hier funktioniert resizing, moving, mapping und unmapping mit mpv und softhddevice unter lxde,
    wobei der mpv wie johns schon sagte etwas träger wirkt. Teilweise hängt X, was sich dadurch bemerkbar macht,
    dass die decorations auf sich warten lassen. Keine Ahnung, ob das an lxde liegt bzw. was man da noch optimieren kann.
    Könnte es sein, dass sich OSD und X zeitgleich der G2D Engine bedienen?


    Gruß Andreas

  • Verhält sich mit mplayer 1.1.1 nicht anders als die letzte Version.


    Edit:
    mplayer-svn kompiliert wieder und verhält sich identisch wie 1.1.1.


    CU
    Oliver

  • Hallo zusammen,


    ich habe zusammen mit johns etwas an libvdpau-sunxi weitergebastelt.
    Wer das Zwischenergebnis testen möchte, kann den dev Branch hier ausprobieren.
    Ein paar Experimente liegen auch im Repo...


    Bekannte Probleme:


    - OSD wird beim window resize nicht korrekt dargestellt, falls gerade aktiv
    - Bei aktiviertem OSD kann der Fensterinhalt nicht überlagert werden. Workaround in Arbeit. Allerdings lässt sich das derzeit nicht komplett richtig lösen.
    - Beim Umschalten werden teilweise auch die ersten "falschen" Frames angezeigt. Schwarzbildschaltung funktioniert (noch) nicht
    - PIP funktioniert nicht
    - Zumindest bei mir hängt die Bedienung von X11 (Maus + Tastatur) oft (für ca. 5++ Sec.) wenn ich auf ein anderes Fenster oder den Hintergrund klicke. Das Video läuft weiter. (hier läuft lxde)


    Gruß Andreas

Jetzt mitmachen!

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