[WiP] Cubieboard: softhddevice über vdpau

  • Zusammenfassung


    • Lektüre:


      Einstellen der Bildschirmauflösung / Belegung der Pins: VDR-Wiki
      Installation auf Festplatte: VDR-Wiki
      Howto VDR mit Softhd-device (noch unvolständig): VDR-Wiki
      libvdpau sunxi: github
      Softhd-device : vdr-developer



    qvdpautest unter cubian

    9 Mal editiert, zuletzt von Moorviper ()


  • Allerdings funktioniert das OSD auch mit der Änderung (noch) nicht und video/vdpau vermisst einige Frames, so dass das Bild ruckelt. Ich denke, das liegt aber in erster Linie am libvdpau_sunxi.so als an softhddevice.
    Gibt es einen Schalter, mit dem man softhddevice maximal debuggen kann? Bzw. wie kann man im Log erkennen, dass bei softhddevice bzgl. OSD alles korrekt aufgerufen wird?
    Gibt es denn eine Liste von softhddevive mit den Methoden, die von VDPAU implementiert sein müssen, damit alles läuft, dann könnte man das möglicherweise abarbeiten.


    Ich vermute, dass im vdpau-backend noch einige Sachen fehlen, bzw. falsch implementiert sind. Wenn wir Fehler im softhddevice ausschließen können, wäre das ein weiterer Schritt.
    Wäre doch schade, wenn wir das nicht zum laufen bekommen...


    Die "missed frames" deuten auf ein zulangsames dekodieren hin. Mal darauf achten, ob es ohne OSD (auch wenn es nicht dargestellt, vielleicht Leistung kostet) besser läuft.
    Mit -DDEBUG gibts mehr Ausgaben und mit -DOSD_DEBUG wird VDR -> Plugin ausgeben. Wobei hier der Fehler nicht liegen kann, da es ja mit NVidia/VDPAU ja alles funktioniert.


    Ich erzeuge ein einfaches ARGB Array was nur zur Graphikkarte hochgeladen werden muß (VdpauOsdBitmapSurface).
    VdpauOutputSurfaceRenderBitmapSurface teilt dann der Hardware mit wo und wie es gerendert werden soll.


    Meine Vermuten ist das der Treiber noch nicht fertig ist, da ja aktuell die NVidia VDPAU Version mit Bitmap funktioniert.


    Alternativ könnte man auch eine VDPAU/OpenGL Ausgabe einbauen, wenn der Treiber VDPAU auf OpenGL unterstützt und dann das OSD über OpenGL 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

  • Na das ist ja sehr interessant! Gleich mal abonniert...


    Also, so wie es aussieht unterstützt der derzeitige WiP-Wrapper noch gar kein OSD, allerdings gibt es im Tracker einen Patch mit dem Basis-Funktionalität zumindestens unter mplayer funktionieren soll:
    https://github.com/linux-sunxi/libvdpau-sunxi/pull/10/files
    Oder gleich den OSD branch nehmen:
    https://github.com/linux-sunxi/libvdpau-sunxi/tree/osd


    Das Debugging müsstest Du auf Seite des vdpau-sunxi-wrappers hochdrehen, dann sollte man auch sowas wie "xxx called but unimplemented!" sehen.
    (Ich schätze mal ein "#define DEBUG = 1" in Zeile 23 der vdpau_private.h sollte es tun)

  • Der Patch ist aber die Holzhammer Methode, weder performant noch das Ergebnis schön.


    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

  • Gibts den kein Testprogramm? Das man zumindest mal etwas testen kann?


    Einfach mal die OSD Fläche mit 0xFFFFFFFF füllen, ob irgendwo ein Transparenzdreher vorhanden ist?


    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

  • Zwischenstand:
    Nach ein wenig herumprobieren und lesen von logs bin ich der Meinung, dass das OSD mit softhddevice und libvdpau_sunxi generell funktioniert. Die Funktionen werden alle sauber aufgerufen, soweit ich das beurteilen kann.
    z.B.

    Code
    vdp_output_surface_render_bitmap_surface(7, {102, 424, 1214, 663}, 9, {102, 424, 1214, 663}, NULL, {(ver=0) 4, 5, 1, 5, 2, 2, {-0,000002, 0,000000, -0,000002, 0,000000}}, 0)
        -> 0


    im vdpau log, oder

    Code
    video/vdpau: osd upload 1112x239+102+424 3ms 1063072


    usw.
    Nur dargestellt wird es nicht. Ich denke da hakt es noch irgendwo in libvdpau_sunxi am korrekten osd overlay... Möglicherweise liegt hier der Grund wg. X11 und G2D.
    Muss ich mir morgen mal genauer ansehen.


    Gruß
    Andreas

  • Ansonsten mal prüfen ob nicht ein Dreher im Alpha drin ist.


    Ich verwende VdpBitmapSurfacePutBitsNative. Prüfe aber nicht mit VdpOutputSurfaceQueryGetPutBitsNativeCapabilities das Format.
    Ich gehe von ARGB aus, vielleicht ist es ja einfach und auf dem Cubieboard RGBA oder ähnliches.


    Oder durch anderes Endian:

    Code
    for (y = y1; y <= y2; ++y) {
                    for (x = x1; x <= x2; ++x) {
                        ((uint32_t *) argb)[x - x1 + (y - y1) * w] =
                            bitmap->GetColor(x, y);
                    }
                }


    in softhddevice.cpp falsch.


    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

  • Du meinst, es wird ein ARGB an VdpBitmapSurfacePutBitsNative geschickt, wobei möglicherweise ein RGBA oder BGRA erwartet wird?
    Dann müsste in VdpBitmapSurfacePutBitsNative abhängig von den Quelldaten zuerst der alpha-Wert verschoben werden? z.B. sowas?

    Code
    rgba = ((argb & 0xFF000000) >> 24) | ((argb << 8) & 0xFFFFFF);


    Trotzdem müsste doch was angezeigt werden, wenn auch Alpha und Farben durcheinander?
    Könnte es sein, dass der Video-Layer den OSD Layer überdeckt?


    Gruß Andreas

  • Ja sowas meinte ich. Kommt auf die Farben im OSD an, ob man etwas sieht, wenn nur die Werte vertauscht sind.


    Funktioniert den das OSD mit mplayer oder ähnlichem?


    XBMC reicht nicht zum testen, da die VDPAU -> OpenGL verwenden und das OSD über 3D rendern.


    Zitat


    Könnte es sein, dass der Video-Layer den OSD Layer überdeckt?


    Ja, aber dann ist es ein Fehler in der VDPAU Implementation auf dem Cubie.


    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

  • Beim mplayer geht das osd / wobei es da ja nur text ist

  • Und mit welchem Branch?
    Gruß Andreas

  • https://github.com/linux-sunxi/libvdpau-sunxi/tree/osd


    mit dem gehts
    Mit osd meine ich


    [Blockierte Grafik: https://raw.github.com/wiki/rdp/sensible-cinema/mplayer_osd.png]



    ich baue mir grade ein gehäuse fürs cubie von daher kann ihc da nicht so viel testen / demnächst werde ich mal versuchen ob enigma2 läuft

  • Ich bin ja schwer am Überlegen mir auch ein Allwinner ARM Board zu holen, allerdings liebäugel ich eher mit dem A31, der sollte noch etwas mehr Pepp haben als das Cubietruck (A20). Allerdings ist der PowerVR wohl nicht gut unterstützt, welchen Grafiktreiber nehmt ihr denn für den Mali im Cubie (Lima, irgendein Binärtreiber oder gar libhybris)? Braucht man bei Ausgabe über CedarX überhaupt ein laufendes X11?

  • Hm
    Für enigma2 isses mit den abhängigkeiten übel
    ein ubuntu wäre da besser als das installierte debian :-/


    beim a31 würde auch cedarx genutzt

    Einmal editiert, zuletzt von Moorviper ()

  • Ich bin ja schwer am Überlegen mir auch ein Allwinner ARM Board zu holen, allerdings liebäugel ich eher mit dem A31, der sollte noch etwas mehr Pepp haben als das Cubietruck (A20). Allerdings ist der PowerVR wohl nicht gut unterstützt,


    Auf alle Fälle A20, da der A31 wg. PowerVR nicht gut in der Community ankommt und die Lust aufs Entwickeln daher nicht so groß ist... Die Wartezeit, um mit dem A20 was Vernünftiges anfangen zu können wird deutlich kürzer sein, als beim A31. Zumindest was Video/Grafik Geschichten angeht.

    welchen Grafiktreiber nehmt ihr denn für den Mali im Cubie (Lima, irgendein Binärtreiber oder gar libhybris)?


    Die Binärtreiber. Lima ist (noch) kein Treiber, sondern momentan nur ein POC mit verschiedenen Test-Anwendungen z.B. Q3...

    Braucht man bei Ausgabe über CedarX überhaupt ein laufendes X11?


    Für Cedarx alleine nicht. XBMC läuft z.B. ohne X. Für libvdpau-sunxi starte ich bei mir hier immer parallel ein X, da ein Display geöffnet werden muss. Aber die Frage habe ich mir auch schon gestellt, obs das überhaupt braucht. Da lasse ich mich gerne belehren.
    Gruß Andreas

  • Hallo zusammen,


    bitte entshuldigt, dass ich mich in euren thread einklinke, aber als cubie Neueinsteiger tu ich
    mich, mit den verstreuten Infos bezgl. vdpau und softhddevice, etwas schwer. Ich habe versucht
    die vdpau Ausgabe per softhddevice unter linaro auf dem Cubietruck zum laufen zu bringen bekam
    aber ausser Ton mit extremen Störgeräuschen nur ein schwarzes Fenster angezeigt. Hab dann kurzer
    Hand das Betriebssystem gegen Cubian ausgetauscht und von neuem die VDPAU libs und den VDR
    compiliert. Mittels mplayer bekomme ich auch hier ein Bild (Ton ist auch OK), aber softhhdevice
    liefert wieder kein Bild. Benötigt man für das softhdhevice irgendwelche patches damit es
    ein Bild liefert ?


    Vielen Dank für eure Unterstützung.


    Grüße


    Andreas

  • Hallo zusammen,


    habe gerade festgestellt, dass es nur ein Rechteproblem war. Habe nun ein Bild aber der Ton ist immer
    noch extrem mit Störgeräuschen versetzt. Gibt es hierzu eine Lösung, abgesehen von Mute :)


    Vielen Dank für eure Unterstützung.


    Grüße


    Andreas

  • Das mit dem ton habe ich auch wenn ich dem softhddevice das ausgabedevice nicht mitgebe.


    zur zeit nutze ich das ding aber eh nur zum basteln da ist der ton egal ;)

  • Zitat

    ich baue mir grade ein gehäuse fürs cubie von daher kann ihc da nicht so viel testen


    Ich suche auch noch ein schickes Gehäuse, wo ein raspberry oder cubie2 hinpasst, sowie Ein/Ausschalt-Steuerung eventuell mit wakeup Funktion....
    Was hast du für ein Gehäuse genutzt?

Jetzt mitmachen!

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