Tester gesucht libva

  • Hallo!


    Da der Thread "Reines Ausgabeplugin für libva mit dem VDR?" hier ist, mach ich das auch mal hier, weiss nicht so genau wo das wirklich reinpasst.


    Angehängt ist ein simples Programm, welches Video (kein Audio) über libva abspielt.
    Natürlich interessiert mich vor allem ob es überhaupt läuft und wie, möglichst auf nicht-vdpau-HW.


    Problem was ich gerade habe: ich möchte OSD mittels VASubpicture ausgeben. Dabei würde ich gerne den Ausgabebereich gleich lassen und je nach Format den Ausgabe-Bereich des Video-Bildes bestimmen.
    Mit vdpau geht das auch, nur leider wird dieser Parameter von libva nicht unterstützt. Allerdings kann ich für die Video-Source-Postion negative Werte angeben, so dass dann an den Seiten Ränder entstehen.
    Nur werden aber vom vdpau-Backend die Werte geprüft und die Breite auf die max. Ausgabebreite zurückgesetzt, so dass rechts/unten kein Rand möglich ist. Da der Source dazu aber vorhanden ist, liesse sich das ja patchen (z.B. 'ensure_bounds' in 'vdpau_video_x11.c', Z. 403 auskommentieren).
    Jetzt würde mich brennend interessieren - wie verhalten sich andere Backends bei solchen Koordinaten? (Ich glaube die Antwort leider schon zu wissen...)
    Dazu kann man bei dem Testprogramm die Source-Koordinaten mit den Tasten 1 - 6 ändern.
    Folgendes sollte passieren:
    1 - linker u. rechter Rand breiter
    2 - linker u. rechter Rand schmaler
    3 - linker Rand breiter
    4 - linker Rand schmaler
    5, 6 wie 3, 4 für rechts


    D verändert den Deinterlacer-Mode.
    Q oder Ctrl-C beendet.


    So, bin gespannt ;)


    Gruss,
    Thomas


    edit:
    Ach so, ja: Aufruf einfach vatest <video-file>
    Jedes Format wird nicht gehen, aber z.B. vdr-Aufnahmen.


    edit 2:
    Neben natürlich libva und dem entspr. Backend muss eine ffmpeg-Version mit vaapi-Ünterstüzung installiert sein.

  • Habe am WE mein WinSystem getauscht und nun liegt HW rum die imho dafür genutzt werden kann.


    Board mit 780A & ATI 3200 onBooard


    Mal sehen das man/ ich das schnell zusammenbaue...

    Software: gen2vdr V3 ( Beta8 ) / gen2vdr V2
    Hardware: Intel 5200EE - 5N7A-VM - Scythe Shuriken - BeQuiet(Netzteil) - X10-USB Remote
    SMT 7020S & P3@900 - Testsystem mit FF und X10-USB Remote
    Links für Neueinsteiger


    "Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

  • Ich helf gerne beim testen Thomas, habe aber erstmal ein Problem mit den Header Dateien von ffmpeg:


    Eigentlich gehören die ja nach /usr/include oder /usr/local/include, bei mir liegen die im Home Verzeichnis:


    $HOME/dist/include


    Das sollte kein Problem sein - jetzt muss ich aber wissen, wie ich das make übergebe ... gibt es da nicht sowas wie ein Parameter "-ldconfig <pfad zu header dateinen> ?


    Wie verwustel ich das ins Makefile?

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

  • Code
    /usr/local/src/vdr/vatest$ make all
    gcc va.c -lX11 -lva -lva-x11 -lavcodec -lavutil -lavformat  -o vatest -g -I /home/louis/dist/include
    /tmp/ccOX1xdG.o: In function `playfile':
    /usr/local/src/vdr/vatest/va.c:386: undefined reference to `avcodec_decode_video2'
    /usr/local/src/vdr/vatest/va.c:408: undefined reference to `av_free_packet'
    /usr/local/src/vdr/vatest/va.c:430: undefined reference to `av_free_packet'
    collect2: ld returned 1 exit status
    make: *** [all] Fehler 1


    hmm - geht das wirklich nicht mit den Header Files in Home?

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

  • Zitat

    Original von Lou
    hmm - geht das wirklich nicht mit den Header Files in Home?


    Die nimmt er schon, aber der Linker findet die Funktionen nicht. Wenn die libs bei Dir auch woanders liegen (in dem Fall -L +Pfad) müssten aber noch mehr Fehler kommen.
    Was ist denn das für eine ffmpeg-Version?

  • Das vlc-vaapi Installer Skript von Kano: http://kanotix.com/files/fix/vlc-vaapi-local.txt


    Baut den vlc-git mit vaapi Support


    Wie du in Zeile 109 siehst holt er sich den Export Snapshot von ffmpeg:

    Code
    wget -N http://ffmpeg.org/releases/ffmpeg-export-snapshot.tar.bz2


    den baut er dann und platziert ihn in $HOME/dist/bin


    Die libs müssten auch irgendwo sein -> wonach such ich da genau?


    EDIT: Hab's!:


    Code
    gcc va.c -lX11 -lva -lva-x11 -lavcodec -lavutil -lavformat  -o vatest -g -I /home/louis/dist/include -L /home/louis/dist/lib

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

    2 Mal editiert, zuletzt von Lou ()

  • Zitat

    Original von Lou
    EDIT: Hab's!:


    Code
    gcc va.c -lX11 -lva -lva-x11 -lavcodec -lavutil -lavformat  -o vatest -g -I /home/louis/dist/include -L /home/louis/dist/lib


    He he, wollts grad schreiben, die müssen auch dort sein ;)

  • okay - hab das mal auf eine Das Erste HD Aufnahme abgefeuert:



    Das läuft nicht so wie es sollte ...


    a) macht Vollbild statt 720p
    b) Bild läuft sauber durch, Last ist niedrig mit 11% gemessen in top -> vaapi + xvba laufen rund
    c) Tasten 1-6 zeigen keine Wirkung


    Das System ist karmic 32bit, GraKa = Ati Radeonhd 4200 (785G Chipset)

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

    Einmal editiert, zuletzt von Lou ()

  • Zitat

    Original von Lou
    Das läuft nicht so wie es sollte ...


    a) macht Vollbild statt 720p
    b) Bild läuft sauber durch, Last ist niedrig mit 11% gemessen in top -> vaapi + xvba laufen rund
    c) Tasten 1-6 zeigen keine Wirkung


    Das System ist karmic 32bit, GraKa = Ati Radeonhd 4200 (785G Chipset)


    Erstmal Danke fürs Testen.


    c) -> Steuerung geht nur von Konsole, d.h. die muss im Vordergrund sein, dann sollte sich was tun.
    b) ist ja fast etwas viel, ich hab hier - aber mit nvidia - fast keine messbare Last
    a) was genau meinst Du da?


    'läuft nicht wie es sollte' - die Meldungen mit "[h264 @ 0x9521850]" sind, wenn nur am Anfang, normal, da noch nicht genug Bilddaten zum dekodieren vorhanden sind.
    Nur "XIO: fatal IO error..." wann kommt das, wird dann abgebrochen?


    Kannst Du, wenn die Steuerung geht, mal Interlaced-Material probieren wie das dann mit unterschiedlichen Stufen ('d') aussieht?

  • Zitat

    Original von tbshl-vdr
    c) -> Steuerung geht nur von Konsole, d.h. die muss im Vordergrund sein, dann sollte sich was tun.


    Du sagst es ... und so läuft es auch :)


    Taste 1 - zoomt gleichmässig horizontal rein
    Taste 2 - macht das rückgängig -> entzerrt das Bild zurück bis in die 1:1 Grösse
    Taste 3 - verzerrt nach links (der rechte Rand bleibt stehen)
    Taste 4 - macht das rückgängig (rechter Rand bleibt stehen) - entzerrt das Bild zurück bis in die 1:1 Grösse
    Taste 5,6 keine Wirkung
    Q beendet
    D da fehlt es mir an Videomaterial ... ich hab mpeg2 mit 576i -> die schluckt vatest nicht:


    Code
    Stream #0.0[0xa0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
        Stream #0.1[0x50](deu): Audio: mp2, 48000 Hz, 2 channels, s16, 192 kb/s
        Stream #0.2[0x51](eng): Audio: mp2, 48000 Hz, 1 channels, s16, 80 kb/s
        Stream #0.3[0x20](deu): Subtitle: [6][0][0][0] / 0x0006
    Stream #0: w 720 h 576
    AvCodecContext w 720 h 576 codec: 2 MPEG-2 video
    Profile: 1 (VAProfileMPEG2Main) Entrypoint 1 (VAEntrypointVLD)
    ERROR get config!
    xvba_video: error: Assertion failed in file xvba_video.c at line 614
    Aborted


    Deinterlace + xvba ist im Moment ein ziemliches Desaster - ich hab das noch nie laufen sehen


    Einmal hatte ich nen Segfault - vermutlich mochte er die Datei nicht, da kam das 'XIO: fatal IO error' her ...


    Und Vollbild macht er mir jedes Mal, egal wie klein das Video ist

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

    Einmal editiert, zuletzt von Lou ()

  • Oops - bin ein schlechter Tester ...


    Zitat

    Original von Lou
    Taste 5,6 keine Wirkung


    Ist natürlich falsch - es hat die umgekehrte Wirkung von 3,4 wie Du es auch beschreibst, also:


    Taste 5 - verzerrt nach rechts (der linke Rand bleibt stehen)
    Taste 6 - macht das rückgängig (linke Rand bleibt stehen) -> wieder nur bis 1:1


    Fazit: das skaliert so wie du es willst, oder möchtest Du mit negativen Werten < als 1:1 werden? Quasi das Bild zusammen stauchen?

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

    4 Mal editiert, zuletzt von Lou ()

  • Zitat

    Original von Lou
    Taste 1 - zoomt gleichmässig horizontal rein
    Taste 2 - macht das rückgängig -> entzerrt das Bild zurück bis in die 1:1 Grösse


    Also wird es nicht schmaler, kein Rand links oder rechts? Wobei das manchmal schlecht zu erkennen ist, da (jdfls. hier mit nvidia) der Rand nicht schwarz oder sonst einfarbig ist, sondern, mmh, wie beschreib ich das, also der Inhalt der ersten Spalte breitgezogen ist.
    Aber demnach

    Zitat

    Original von Lou
    Taste 5,6 keine Wirkung


    funktioniert das mit xvba auch nicht wie gewünscht, da sollte sich der rechte Rand verändern, also muss ich mir da was anderes einfallen lassen...


    Zitat

    Original von Lou

    Code
    Profile: 1 (VAProfileMPEG2Main) Entrypoint 1 (VAEntrypointVLD)
    ERROR get config!
    xvba_video: error: Assertion failed in file xvba_video.c at line 614
    Aborted


    Ah ja, genau für den Fall (ERROR get config) hab ich hier im test-source vergessen den error-status zu setzen, eigentlich sollte dann beendet werden und kein Fehler vom Backend oder sonstwoher kommen.
    Und für den Fall "kein Profil" auch wie ich gerade sehe, allerdings gibts ja da ja eines, warum das trotzdem einen Fehler gibt wäre noch festzustellen...
    Darauf (Formate, Profile...) hab ich bisher aber auch noch nicht so sehr geachtet, ist noch unvollständig und sicher mit Fehlern.


    Zitat

    Original von Lou
    Deinterlace + xvba ist im Moment ein ziemliches Desaster - ich hab das noch nie laufen sehen


    Waren ja hier einige Beiträge dazu, klingt nicht gut, mehr weiss ich da aber auch nicht und ich kann das (noch) nicht selber testen.
    Im übrigen hab ich das auch mit nvidia noch nicht wirklich hinbekommen, prinzipiell geht das, aber sehr schön an Laufbändern zu sehen ist, dass das Deinterlacing immer wieder aussetzt. Beim testen jetzt im Zusammenhang mit libva ist mir aufgefallen, dass das vom Decoder kommende Flag für Deint./Progr.-Frame zeitweise gesetzt/nicht gesetzt ist. Ich meine auch hier sowas mal gelesen zu haben, nur wo... Wenn mir da einer auf die Sprünge helfen kann...


    Zitat

    Original von Lou
    Und Vollbild macht er mir jedes Mal, egal wie klein das Video ist


    Ach so, ja, das ist so gewollt ;)
    Wenn das stört, bei Zeile 519


    int wnd_w = wattr.width;
    int wnd_h = wattr.height;


    wattr... durch gewünschte Werte ersetzen.
    Da das aber sicher noch für andere Test genutzt werden soll, ist die Gefahr recht gross, dass ich da noch Optionen/Tastatur-Steuerung ode so einbaue. Muss im "Produktiv"(ja auch eher noch Test-)-Code ja sowieso noch sein.

  • Zitat

    Original von Lou
    Oops - bin ein schlechter Tester ...


    Und ich ein langsamer Schreiber, vor Deinem Post hab ich doch schon lange angefangen ;)
    (naja schreiben geht schnell, aber erstmal Gedanken ordnen ;) )



    Ja genau, es sollte gestaucht werden, so dass z.B. 4:3 Material auf einer 16:9 Ausgabe eben auch so dargestellt wird. Das an sich ist nicht das Problem, das kann durch die Ziel-Koordinaten gemacht werden. Aber, ich möchte das OSD über 'SubPictures' darstellen, und die werden sozusagen mit dem eigentlichen Bild verbunden, d.h. wenn ich da die Ausgabe stauche, ist es das SubPicture auch.
    Die direkte vdpau-Ausgabe hat auch einen Parameter für die Koordinaten des eigentlichen Bildes, so dass die Ziel-Koordinaten gleich bleiben können und 'SubPictures' immer die gleiche Grösse haben. Blöderweise wird das im vdpau-Backend nicht genutzt, was aber, da Quellen vorhanden, leicht geändert werden kann. Nur xvba ist ja nicht Quell-offfen, also fällt das mindestens dafür aus (ob das Treibermässig geht wäre eine weitere Frage, und wie es bei Intel aussieht weiss ich auch nicht).
    Irgendwo dachte ich mir sowas ja schon, also andere Lösung finden...

  • Hallo Thomas,


    so, nachdem ich meine ganzen Senderlogos neu gemacht habe, habe ich auch wieder Zeit für den x4500HD-Grafikchip.


    Ich habe die Kiste mit einem Debian-Sid neuinstallt, jetzt die Frage, was nehme ich, bei sid gibt's schon ne aktuelle libva..


    oder eben ganz neu per Hand von hier alles neu:


    http://intellinuxgraphics.org/2010Q2.html


    Wäre zwr ne Menge Handarbeit, aber alles dafür sehr aktuell.


    Mit welcher libva bist du unterwegs?


    Danke schonmal dafür, dass du mit der Integration angefangen hast!!!


    Gruß
    Wolfgang

  • Zitat

    Original von wbreu
    Mit welcher libva bist du unterwegs?


    Alles (also libva + vdpau-video) von hier
    http://www.splitted-desktop.com/~gbeauchesne/


    Wriklich empfehlen kann ich gar nix, hab ja selbst bisher nur das vdpau-Backend im Einsatz.


    Zitat

    Original von wbreu
    Danke schonmal dafür, dass du mit der Integration angefangen hast!!!


    Momentan häng ich etwas daran, wie OSD zu machen wäre. vdpau hat zum rendern 3 Parameter, src, dst und noch einen für die Video-Koordinaten, wo vom Bild selbst ein Ausschnitt genommen werden kann. D.h., das OSD kann einfach auf die Fläche gelegt werden, egal wie das Video ist. Das wird von libva aber nicht durchgereicht, und fraglich ist auch, ob und wie das bei ATI, Intel... geht (Video-Koordinaten neg. anzugeben, so dass ein Rand entsteht, scheint ja bei xvba nicht zu gehen, und da gibts ja keinen source). Jetzt die Idee, das OSD erstmal auf ein zusätzl. Surface zu legen sowie auf das Video (skaliert, jeweiliger Auschnitt) und wenn ein Rand da ist, den Teil vom darunterliegenden OSD anzuzeigen. Mit vdpau-video gibts aber schon Probleme, da werden teilw. die Subpicture-Koordinaten etwas seltsam umgerechnet...


    Ich werd sicher bald darauf zurückkommen wg. HW, für die ATI die ich hier hab (und nichtmal weiss ob die geeignet ist) hab ich momentan nichtmal ein PCIe-Board, wie ich vor kurzem festgestellt habe.


    Gruss,
    Thomas

  • Nabend,


    ich poste mal hier, da es besser zu deinem Engagement passt.


    Wir hatten uns ja letztens im anderen Thread von mir über die libva mit einem Intel X4500HD unterhalten:


    HDTV mit Intel X4500HD-Grafikchip Test und Ergebnisse


    Ich habe jetzt nochmal ein bisschen mit drei libva-Versionen "gespielt", dabei war es dann jeweils ohne Probleme möglich vdr-Aufnahmen in ".ts" von SD-Sendern wiederzugeben.


    Aufnahmen in .ts von HD-Sendern stiegen jeweils mit einem Fehler aus, sinngemäß der Fehler auf der Konsole, dass der Grafiktreiber eine Speicheradresse auf dem Chip nicht findet. Da es jeweils (bei unterschiedlichen libva-Versionen) die selbe Speicheradresse war, sieht es tatsächlich so aus, daß die h264-Beschleunigung auf der GPU für den X4500HD noch nicht im Inteltreiber ist...


    => das bedeutet dann eben mal warten, dass dritte Quartal 2010 ist ja schon da!


    Wenn es sowiet ist dass der Treiber das h264-Gedöns unterstützt, werde ich wieder testen und berichten.


    Ich hoffe du bleibst dran an der Fortentwicklung des Tools/Libva-Integration wo auch immer...


    Gruß
    Wolfgang

  • Zitat

    Original von wbreu
    => das bedeutet dann eben mal warten, dass dritte Quartal 2010 ist ja schon da!


    Ja...
    Was gibt vainfo eigentlich aus?


    Zitat

    Original von wbreu
    Ich hoffe du bleibst dran an der Fortentwicklung des Tools/Libva-Integration wo auch immer...


    Auf jeden Fall, schon allein wg. der Zeit, die bisher drin steckt...


    Gruss,
    Thomas

  • Hallo!


    Ein Test-Update, worauf es hier ankommt ist, wie die (nicht-vdpau-)Backends mit Overlays umgehen.
    Das es ja scheinbar mindestens mit xvba nicht möglich ist das Videobild 'gestaucht' auf einem Surface auszugeben, so dass das Overlay in gleichbleibender Grösse ausgegeben werden kann und da keine Quellen da sind, ist die einzige mir einfallende Lösung, ein zusätzliches Surface zu verwenden und im Fall eines Randes diesen Overlay-Teil auf diesem auszugegebn.
    Mit vdpau geht das schonmal auch nicht ohne Patch, die Koordinaten werden da nicht so ganz umgesetzt wie es (nach meinem Verständis) sein soll, es ist auch nicht möglich, ein Teil-Bitmap, nicht am Anfang beginnend, am Anfang eines Surfaces auszugeben.
    Jetzt hoffe ich, dass das mit xvba klappt...


    Mit 'o' wird ein "OSD" (ein Gitternetz, ein paar Farbverläufe, Rechtecke) eingeblendet, wichtig ist jetzt, dass die Teile, insbes. bei gezoomten Video ('z' und 'Z') an der richtigen Stelle sind, kein Versatz zu sehen ist.
    Wichtig wäre auch Transparenz (mit 't' und 'T' ändern), farbige Flächen müssten auch völlig transparent werden (mit vdpau leider nicht).
    Mit der Leertaste kann man das Video anhalten.


    Die Steuerung geht nur von Konsole aus, auch Beenden ('q' od. Ctrl-C) möglichst nicht durch Schliessen des Fensters.


    Gruss,
    Thomas

  • Hallo Thomas,


    irgendwie bekomme ich den neuen Test nicht kompiliert:



    wobei ich /usr/include/linux/dvb/osd.h und /usr/include/va/va.h local verlinken mußte.


    Beim ersten Test bekomme ich eine assertion:



    Das ganze auf einem AMD780G mit Ubuntu 10.04 und den packages aus dem "cutting edge multimedia" PPA bei 64bit.


    Gruß, ollo

Jetzt mitmachen!

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