Softhddevice vaapi support


  • Ich überlege meine Haswell HW gar nicht weiter zu testen, sondern nomm'l Silvermont, den Celeron J1800, zu testen, interessiert mich wie die Leistung im Vergleich zum wirklich guten J1900 ist. In dem Zug würde ich VPP/VA-API gerne testen und meinen Beitrag liefern das lauffähig zu bekommen ...


    Ist egal von der Software Seite, wenn es erstmal funktioniert, dann ist die Intel Hardware egal. Ich hätte auch ein Silvermont zum testen.


    Prolem ist die neue API VPP weiter einzubauen.


    /usr/include/va/va_vpp.h

    Code
    * foreach (iteration) {
     *     vaBeginPicture(va_dpy, vpp_ctx, vpp_surface);
     *     foreach (surface) {
    ....
     *         // Apply filters
     *         vaRenderPicture(va_dpy, vpp_ctx, &pipeline_buf, 1);
     *     }
     *     vaEndPicture(va_dpy, vpp_ctx);
     * }


    Dieser Teil muß eingebaut werden. Wobei wir nur 1 "surface" haben. Wir mischen nicht mehrere Flächen zusammen.
    Und dazu noch einmalig die Pipeline anlegen.


    Im Moment bekommt der Render immer eine Fläche und gibt die über VaapiPutSurfaceX11 bzw. VaapiPutSurfaceGLX aus.
    Hier baucht man die neue API nur einzuhängen. Und man kann die alten Funktionen weiterverwenden um die gefilterte Fläche auszugeben.


    Selbst BOB soll über die neue API besser sein als bisher.


    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

  • Ist egal von der Software Seite, wenn es erstmal funktioniert, dann ist die Intel Hardware egal. Ich hätte auch ein Silvermont zum testen.

    Ich dachte halt, das man evtl. mal gemeinschaftlich mit IvyBridge HW als Basis anfängt, was ja technologisch auch BayTrail-D einschließt. SandyBridge guckt man dann später mal und Haswell wird vmtl. dann sowieso laufen, hat ja vmtl. sowieso mehr Leistung.


    Wobei wir nur 1 "surface" haben. Wir mischen nicht mehrere Flächen zusammen.

    Ok, was heißt das? Nachteile, Einschränkungen, Vorteile ... ?


    Regards
    fnu

    HowTo: APT pinning

  • Ich habe kein Haswell, ooh editiert. Ich habe IvyBridge nur im Moment ohne Monitor.


    Ist egal, wichtig ist, das man den Code schreibt und irgendwie kommt bei mir immer etwas anderes dazwischen.
    Und wenn der drin ist im SoftHdDevice Plugin, ist die Intel Plattform (SB, IVY, Haswell) eigentlich egal, da die alle
    über die gleiche Software API angesprochen werden.


    Das Beispiel im Headerfile erzeugt eine Ausgabefläche aus mehreren Quellflächen, was mehrere Videos oder OSD sein können.
    Ist irgendwie zu kompliziert. Für uns reicht es die Frame (Fläche) vom Dekoder durch die neue API (Pipeline) zuschicken und auszugeben.


    Einfach mal anfangen, dann wird es schon klarer.


    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

  • Und wenn der drin ist im SoftHdDevice Plugin, ist die Intel Plattform (SB, IVY, Haswell) eigentlich egal, da die alle
    über die gleiche Software API angesprochen werden.

    Ok, ich dachte da gäbe es "recht große" Unterschiede im Funktionsumfang zw. SNB, IVB oder HSW, der hier in den Bibliotheken unterstützt wird. Soll uns allen wohl recht sein ... :)


    Regards
    fnu

    HowTo: APT pinning

  • Zum Verständnis.


    VideoRenderFrame wird von ffmpeg mit einer fertig dekodierten Frame aufgerufen.
    Die Hardwarefläche (surface) ist in der av_frame hinterlegt.
    Weiter gehts mit VaapiRenderFrame was sich in Software Pfad und Hardware Pfad teilt.
    (Sogar viertelt, Soft -> Soft, Soft -> Hard, Hard -> Soft, Hard -> Hard ist theoretisch möglich)
    Im Moment ist eigentlich nur der Hardware Pfad intressant, da wird die Fläche nur in einem Ringbuffer abgelegt.
    Zusätzlich wird noch auf Formatänderungen geprüft ist aber unintressant.


    Der Videothread prüft alle 20ms ob eine neue Fläche im Ringbuffer ist und gibt etwas aus.
    VaapiDisplayFrame wird damit aufgerufen und holt sich die Fläche aus dem Ringbuffer und zeigt sie an.
    Hier gibt es einen GLX und den VA-API Anzeige Pfad.


    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 ()

  • Soo. Für den Moment sieht das ganz gut aus.


    Folgende Probleme:
    Ich bekomme es nicht auf 50Hz umgestellt.
    Ich habe einen komischen Grauschleier bzw. den hab ich wegbekommen aber noch keine persistente Lösung gefunden.
    OSD gibt nur Match von sich.


    Bild ist für 60Hz überrasschend flüssig.


    Edit: Ich verbessere: LCARS Skin läuft. FlatPlus nicht.
    Edit2: DFAtmo funktioniert nicht.


    Edit3: So 50Hz funktionieren. Ich hoffe ich bekomme das irgendwie auch noch ohne ModeLines hin.


    Edit4:
    Gut dann mal ein paar Logs


    va-api-glx funktioniert besser als va-api. Motion Adaptive Deinterlacing taucht in den Logs auf. Ich weiß aber nicht, wie ich es an bekomme.



    Auf den Interlaced-Kanälen z.B: Prosieben HD passt Bild und Ton gar nicht zusammen. Bild wirft Klötze und Ton ist abgehackt. Außerdem zittert das Bild insgesamt.

  • Die Übersicht die aussagt das auch die "HD Graphics" der Haswell Celeron, Pentium nur 6 EUs haben finde ich nicht mehr. Lt. Wikipedia sind es 10 EU gegenüber 6 bei SandyBridge & IvyBridge. Ich habe es oben korrigiert, mea culpa.


    Die GPU der Silvermont/BayTrail-D CPUs entspricht technologisch IvyBridge, plus "Intel QuickSync Video".


    PS.: Und noch was Meister: "Die Baytrail ist zwar IVB, aber sehr beschränkt was die EUs angeht.", wo sind die Belege dazu ... ?

    Ok, habe übersehen dass du das auf Celeron und Pentium beschränkt hast, vom IVB gibts ja auch die HD4000 und beim SNB die HD3000 mit mehr EUs.


    Was soll ich belegen, dass die Baytrail 4 EUs hat? Das hast du doch selber schon gesagt?
    Hier ist auch eine gute Übersicht über die Intel GPUs und EUs - http://en.wikipedia.org/wiki/C…graphics_processing_units
    Baytrail ist der einzige mit 4 EUs, aber das kann doch hier eh egal sein wenn ihr eh alle Nvidia nutzen wollt ;)

  • Ok, habe übersehen dass du das auf Celeron und Pentium beschränkt hast, ...

    Langsam bekomme ich Probleme Dich wirklich ernst zu nehmen. Mit was soll man denn bitte die Silvermont SoC Atom denn sonst vergleichen? Mit CPUs die ohne Mainboard/Chipsatz mindestens das Doppelte des ASRock Q1900M kosten und naturgemäß viel leistungsfähiger sein sollten, allerdings auch leistungshungriger ... ?


    Regards
    fnu

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()


  • Ich bekomme es nicht auf 50Hz umgestellt.


    Das Problem habe ich auch mit dem IVY Bridge, Ich verwende EFI Boot und EFI Framebuffer, es funktionierte nur den EFI Framebuffer richtig 1080p und 50Hz mit Bootparametern zukonfigurieren. Die Modeline im Xorg.conf wurden ignoriert.


    Alternativ ging noch mit xrandr die Auflöung, nach dem Starten von X11, umstellen.


    Zitat


    va-api-glx funktioniert besser als va-api. Motion Adaptive Deinterlacing taucht in den Logs auf. Ich weiß aber nicht, wie ich es an bekomme.


    Also es funktioniert nur va-api-glx richtig. Also nur Testen mit diesem.
    Motion Adaptive Deinterlacing geht noch nicht, darum geht es in diesem Thread.
    Die Abfrage der Fähigkeiten ist bereits drin, jetzt fehlt noch das Setup und die Übergabe.


    Zitat

    Auf den Interlaced-Kanälen z.B: Prosieben HD passt Bild und Ton gar nicht zusammen. Bild wirft Klötze und Ton ist abgehackt. Außerdem zittert das Bild insgesamt.


    Diese kann ich nicht testen. War das mit "va-api-glx"?
    Bildfehler können von va-api-glx kommen. Bild und Ton Synchronisation kann aber nur bei va-api-glx passen.
    Es kann aber auch an der GPU liegen, daß die nicht genug Leistung dafür hat.


    Das Bild zittern liegt am BOB des libva Intel Treiber und sollte mit dem Einbau der neuen API verschwinden.


    Edit: Manche Möglichkeiten des NVidia VDPAU Treibers in meinem Plugin, fehlen noch im Intel Teil.
    z.b. der Grab, wenn mal alles funktioniert, dann kommt dies von selber.


    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

    3 Mal editiert, zuletzt von johns ()

  • Langsam bekomme ich Probleme Dich wirklich ernst zu nehmen. Mit was soll man denn bitte die Silvermont SoCs Atom denn sonst vergleichen? Mit CPUs die ohne Mainboard/Chipsatz mindestens das Doppelte des ASRock Q1900M kosten und naturgemäß viel leistungsfähiger sein sollten, allerdings auch leistungshungriger ... ?


    Sowie ich es sehe sind die EU Einheiten total egal für uns.
    Was für uns wichtig ist, ist der Decoder, Deinterlacer und Filter in der GPU. Diese sind aber bei Intel eigene Einheiten und auch doppelt vorhanden.
    Somit kann die GPU zwei Streams gleichzeitig handhaben. Wichtig sind für uns Bandbreite und Taktfrequenz.
    Und Ziel ist es diese Hardware zuverwenden und somit ist die CPU Rechenleistung auch egal.


    Man müsste mal ein Benchmark, wie für Nvidia für Intel schreiben. Oder testet mal, den Intel VDPAU Treiber mit dem NVidia VDPAU Benchmark.
    (Link ist in diesem Thread).


    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

  • johns


    Danke, das war immer mein Verständnis, zumal DDD scheinbar sein OpenELEC ja rein in Software-Deinterlace'd arbeiten läßt, wo die Zahl der EUs ebenfalls egal ist, die CPU Leistung hingegen nicht ...


    Schön wäre "QuickSync Video" nutzen zu können, denkbar?


    Regards
    fnu

    HowTo: APT pinning

  • Die Modeline im Xorg.conf wurden ignoriert.


    Das habe ich hinbekommen. Ich packe das später/gleich mal alles in die VDR4Arch Wikiseite. Bisher ist es mir aber noch nicht gelungen eine xorg.conf für NVidia und Intel zu erstellen.

    War das mit "va-api-glx"?


    Mit va-api ging nicht viel. Sollte also va-api-glx gewesen sein. Ich teste es gleich nochmal.

    Das Bild zittern liegt am BOB des libva Intel Treiber und sollte mit dem Einbau der neuen API verschwinden.


    Das ist schön zu hören.

  • Nochmal ein paar Logs. Diesmal garantiert va-api-glx


    ZDF HD


    Prosieben HD



    Bei Prosieben war es eher ruhig. Dafür sieht man in der Log eindeutig, warum der Ton nicht zum Bild passt.
    Bei ZDF HD war einiges los. Ich denke mal "display buffer empty" ist böse?!


  • Schön wäre "QuickSync Video" nutzen zu können, denkbar?


    http://en.wikipedia.org/wiki/Intel_Quick_Sync_Video


    So wie es hier beschrieben wird und ich es auch verstehe. Ist es nur Hardware Encoder und Decoder.
    Und beides wird inszwischen von libva unterstützt. Den Encoder braucht mein Plugin ja nicht.


    Der Encoder wäre für live oder streamdev oder sat>ip Plugins intressant. Ich weiß nicht ob ffmpeg dies unterstüzt.
    Der gstreamer sollte es können.


    Und der Dekoder ist ja das einzige was im Moment hervorragend läuft.


    Was du meinst ist wohl Intel Clear-Video. http://www.intel.de/content/ww…d-technology-general.html


    Alles dies wird mit der VPP API, die in SoftHdDevice eingebaut werden soll, unterstüzt.
    Sehe gerade der Hautton Filter ist inzwischen auch vorhanden.


    Welche nun alle von den verschiedenen Intel GPUs und dann vom Treiber unterstützt werden. muß dann prüfen.


    Wichtig ist der Einbau der VPP API, damit kommt dann alles, mehr oder weniger von alleine.


    Ich bin kein Freund dieser ganzen Filter, aber wenn sie schon vorhanden sind, dann kann man auch die Parameter dafür einbauen und übergeben.


    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

  • Ist es nur Hardware Encoder und Decoder.

    Ja genau und auf die Gefahr hin also Dummy da zu stehen, im VDR muß doch wohl der Videostream decode'd werden, oder? Also eine Aufgabe die weder die CPU noch die GPU erledigen müßte?


    Regards
    fnu

    HowTo: APT pinning


  • Bei ZDF HD scheint es ein performance Problem zugeben.
    Bei Prosieben HD önnte es das gleiche sein und es kommt dadurch zu keinem A/V Sync.


    Ist jetzt schwierig zusagen, woran es liegt. Am J1800/j1900 oder an der Software oder an der Kombination.
    Oder an den Treiber.


    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

  • Ja genau und auf die Gefahr hin also Dummy da zu stehen, im VDR muß doch wohl der Videostream decode'd werden, oder? Also eine Aufgabe die weder die CPU noch die GPU erledigen müßte?


    Ist eine Kombination, die CPU parsed den Stream und gibt es schön aufbereitet an die GPU weiter, wo eine spezielle Hardware Einheit die Dekodierung übernimmt.


    Wie ich geschrieben habe, ist dies das Einzige was im Moment hervorragend mit meinem Plugin funktioniert.


    Also der Hardware Dekoder funktioniert unter Linux.


    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

Jetzt mitmachen!

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