johns:
Müsste denn am Ende der main Schleife nicht irgendwo ein VideoOsdExit() stehen, oder ist das überflüssig?
Gruß Andreas
johns:
Müsste denn am Ende der main Schleife nicht irgendwo ein VideoOsdExit() stehen, oder ist das überflüssig?
Gruß Andreas
So habe meine Festplatten installation hinbekommen
ich werde nun mal nur den x-server installieren ohne fenstermanager
evtl verhindert der das saubere osd
Performance möglicherweise ja, OSD Problem nein.
Zitat
evtl bringt es auch etwas den 3.10 kernel mal drauf zu haun ..
Nein. stage/sunxi-3.4 ist der aktuellste bzw. umfangreichste.
Möglicherweise haben wir das Problem gefunden. Könnt ihr bitte schauen, ob es sich bei euch das "flackernde" OSD reproduzieren lässt?
Bei mir taucht bei dmesg immer diese Meldung auf "wait g2d irq pending flag timeout" - danach flackerts.
Vorgehensweise: Mit mplayer das bunny abspielen, geht gut. VDR Start 1, geht gut. Keine Meldung, VDR Start 2 -> Flackern und Meldung.
Wenn sich jemand den Kernel selber bauen möchte, kann er mal probehalber den Timeout hier https://github.com/linux-sunxi…char/sunxi_g2d/g2d.c#L122 auf 100 hochzusetzen.
Gruß Andreas
Hallo,
welchen Stand hast du genommen? Bei mir gings mal, allerdings hab ich derzeit nur in solches Bild: http://www.vidup.de/v/fYKiz/
Gruß Andreas
Ok. Den Commit hatte ich noch nicht drin am Samstag. Ich muss da heut abend mal ein paar Tests fahren.
Ja, bei mir war das OSD ordentlich in der richtigen Größe da. Mit "svdrpsend hitk ..." konnte ich auch navigieren. Das war alles problemlos bis auf Minimales Flackern. Aber das wird sich auch noch geben...
Ob die Farben passten weiß ich nicht, da war die Zeit zu kurz, aber das kann höchsten noch an Drehern in den ARGB Werten liegen.
EDIT Gibts da logs, wo/womit softhddevice aussteigt? Ok
Gruß Andreas
EDIT2: Achtung: repo (ein letztes Mal) rebased, damit endlich Ordnung ins Datum kommt
Hallo,
ich habe mein Repo rebased auf Basis von den neuesten Commits von jemk. Siehe hier. Den aktuellen Stand habe ich noch nicht ausprobiert, sollte aber so funktionieren, wie der alte von Samstag. OSD ging da ganz gut, flackerte noch minimalst.
softhddevice habe ich mit DUSE_BITMAP kompiliert, und in der script.bin framebuffer_num=4 und scaler_mode enabled. Alles auf einem A10.
Jetzt muss noch an der Performance geschraubt werden, dann schauts schon ganz gut aus für einen nativen VDR client.
Vielleicht kann sich jemand den anderen WIP branch anschauen mit output_surface_put_bits_native. Das habe ich nur mal schnell aus surface_bitmap (blind) übernommen und werds heute abend mal testen.
Gruß
Andreas
So. OSD läuft. Dieser Commit wars: https://github.com/linux-sunxi…a70cff3c19efb53769e967d72.
Ich habe ihn kurzerhand auf meinen WIP/osd angewandt und siehe da, osd ist da. Der linux-sunxi osd branch sollte wohl auch gehen.
Jetzt muss das ganze noch etwas performanter werden, dann schauts gut aus.
Gruß Andreas
Ich habe mich mal hingesetzt und den Code von libvdpau mit log Einträgen geflutet um nachzuvollziehen, wo der Hund begraben ist. Werde das sobald möglich auf meinen github account stellen, damit wir hier testen können und evtl. ein Stück weiter kommen.
Gruß
Andreas
2x DVB-S + 1x DVB-S2.
3x aufnehmen auf USB + streamen funktioniert. Ob da jemals HD dabei war bezweifle ich, da ich HD noch nicht so arg nutze. Aber vielleicht sollte ich mal einen Belastungstest machen Gegen böse Plugins hat er auch nichts.
Kurzer OffTopic Exkurs zu Allwinner, weil du es ansprichst:
Die Mele A2000 hat einen Allwinner A10, 512MB und SATA. Das Cubieboard 1 hat ebenfalls den A10, 1GB und SATA. Cubieboard 2+3 den DualCore A20.
Der A31 ist ein QuadCore und mag als Server leistungsfähiger sein. Allerdings ist hier ein PowerVR statt Arm-Mali als GPU (3D) verbaut, weshalb sich die Entwicklungsfreude in Grenzen hält.
Die Priorität liegt derzeit eindeutig auf A10/A20/A13/A23 und das Warten auf den A80 OctaCore hat begonnen.
Ich versuche hier ja immer wieder Leute zu finden, die sich mit vdpau auskennen und Interesse an der sunxi-Entwicklung haben. Ein REing Projekt für den Video Decoder ist ganz gut fortgeschritten, so dass ein Einsatz als Client vie softhddevice auch (theoretisch) möglich wäre.
Es gibt diverse Cubieboard-Threads hier, die sich damit befassen - viel fehlt nicht mehr (OSD) - ausser ein halt paar Leuten, die genug Ahnung haben und sich ein bißchen damit befassen wollen. Meine Ahnung hält sich leider in Grenzen. Hardwaretechnisch scheinen mir die Allwinner SoCs geeigneter als VDR oder XBMC Client als der RPi, obwohl ich VDR auf dem RPi zugegebenermaßer noch nicht probiert habe... Nur die letzten Schrauben der Software fehlen halt.
Gruß Andreas
PS: Sorry fürs Hijacking :p
Würde das BeagleBone Black oder Cubieboard mit mehr als nur einen Tuner zu recht kommen?
Bei mir läuft hier eine Mele A2000 mit 3 USB Tunern als Server. Bisher keine Probleme.
Gruß Andreas
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
Und mit welchem Branch?
Gruß Andreas
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?
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
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.
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
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
z.B. hier: http://store.r0ck.me/
Kommt halt dann aus China und evtl. musst du dich mit dem Zoll rumschlagen. Ich habe meinen damals vorab als einen der ersten 15 Prototypen direkt von den Jungs bekommen... aber auch schon meine Cubieboard2 bei obiger Adresse bestellt. Das ist der Shop des Herstellers und es gab keine Probleme.
Gruß Andreas
Müsste falsch sein, ich überprüfe es, dann packe ich alles ins GIT.
Johns
Hört sich gut an. Danke.
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...
Moorviper: Ruckelt bei dir nichts? D.h. hast du nicht die "video/vdpau: missed frame" Meldungen? Ich habe hier ein Cubieboard 1.
Danke und Gruß
Andreas
EDIT: Vielleicht sollte man die Diskussion ab hier in einen neuen Thread "Cubieboard: softhddevice über vdpau" auslagern!?
Dumme Frage: Wie stosse ich die Anzeige des OSD an, wenn ich vdr über ssh starte?
Der neue Branch läuft übrigens hier mit DUSE_BITMAP ohne segfault, aber (noch) ohne OSD. Und das Bild stottert wegen "video/vdpau missed frame". Habt ihr das auch?
johns: stimmt denn dein Patch oder müsste die Zeile 8257 nicht "VdpauOutputSurfaceRenderBitmapSurface(VdpauSurfacesRb" heißen?
Gruß Andreas
Probier doch lieber mal den osd-branch https://github.com/linux-sunxi/libvdpau-sunxi/tree/osd.
Es wurde pkendall's bitmap branch gemerged und noch was gefixt. Das sollte der aktuellste branch sein, wo am meisten enthalten ist.
Gruß Andreas
Mittlweile habe ich jetzt auch alles mal aufgesetzt. Video funktioniert bei jemk/master und pkendall/bitmap - allerdings mit einigen/vielen framedrops (video/vdpau missed frame). Aber gehen tuts.
Wenn ich USE_BITMAP anschalte bekomme ich einen Speicherzugriffsfehler (pkendall/bitmap vorrausgesetzt, da nur dort die bitmap Sachen "theoretisch" implementiert sind).
In Johns' Patch ist allerdings noch ein kleiner Fehler, wenn ich richtig liege:
...
+#ifdef USE_BITMAP
+ status =
+ VdpauOutputSurfaceRenderBitmapSurface(VdpauSurfacesRb
+ [VdpauSurfaceIndex], &output_rect,
...
Mein VDPAU-Log (export VDPAU_TRACE=1):
root@Cubie1:~# export VDPAU_DRIVER=sunxi
root@Cubie1:~# export VDPAU_TRACE=1
root@Cubie1:~# cd /usr/local/bin
root@Cubie1:/usr/local/bin# ./vdrcmd
VDPAU capture: Enabled
vdp_imp_device_create_x11(0x1082fe0, 0, -, -)
[VDPAU SUNXI] VE version 0x1623 opened.
-> 0, 1, 0xb3338121
vdp_get_proc_address(1, 0, -)
-> 0, 0xb3326121
vdp_get_proc_address(1, 5, -)
-> 0, 0xb33260ad
vdp_get_proc_address(1, 2, -)
-> 0, 0xb3328865
vdp_get_proc_address(1, 4, -)
-> 0, 0xb3328795
vdp_get_api_version(-)
-> 0, 1
vdp_get_information_string(-)
-> 0, "sunxi VDPAU Driver"
vdp_get_proc_address(1, 6, -)
-> 0, 0xb3329569
vdp_get_proc_address(1, 7, -)
-> 0, 0xb3328601
vdp_get_proc_address(1, 8, -)
-> 0, 0xb3328521
vdp_get_proc_address(1, 9, -)
-> 0, 0xb3328431
vdp_get_proc_address(1, 10, -)
-> 0, 0xb3326039
vdp_get_proc_address(1, 11, -)
-> 0, 0xb33282ad
vdp_get_proc_address(1, 12, -)
-> 0, 0xb332a929
vdp_get_proc_address(1, 13, -)
-> 0, 0xb332aa61
vdp_get_proc_address(1, 14, -)
-> 0, 0xb3328119
vdp_get_proc_address(1, 18, -)
-> 0, 0xb3327d85
vdp_get_proc_address(1, 19, -)
-> 0, 0xb3325fc5
vdp_get_proc_address(1, 20, -)
-> 0, 0xb3327c01
vdp_get_proc_address(1, 21, -)
-> 0, 0xb332abb5
vdp_get_proc_address(1, 22, -)
-> 0, 0xb332ad01
vdp_get_proc_address(1, 25, -)
-> 0, 0xb3327a6d
vdp_get_proc_address(1, 26, -)
-> 0, 0xb332796d
vdp_get_proc_address(1, 27, -)
-> 0, 0xb3325f51
vdp_get_proc_address(1, 29, -)
-> 0, 0xb332b1c9
vdp_get_proc_address(1, 33, -)
-> 0, 0xb332a781
vdp_get_proc_address(1, 34, -)
-> 0, 0xb332a679
vdp_get_proc_address(1, 36, -)
-> 0, 0xb332752d
vdp_get_proc_address(1, 37, -)
-> 0, 0xb332742d
vdp_get_proc_address(1, 38, -)
-> 0, 0xb3325ed9
vdp_get_proc_address(1, 40, -)
-> 0, 0xb332891d
vdp_get_proc_address(1, 41, -)
-> 0, 0xb33271cd
vdp_get_proc_address(1, 43, -)
-> 0, 0xb332701d
vdp_get_proc_address(1, 46, -)
-> 0, 0xb332a4b1
vdp_get_proc_address(1, 47, -)
-> 0, 0xb3329dc5
vdp_get_proc_address(1, 48, -)
-> 0, 0xb332a279
vdp_get_proc_address(1, 53, -)
-> 0, 0xb3325e61
vdp_get_proc_address(1, 54, -)
-> 0, 0xb3329345
vdp_get_proc_address(1, 55, -)
-> 0, 0xb3325de9
vdp_get_proc_address(1, 56, -)
-> 0, 0xb3326ea1
vdp_get_proc_address(1, 57, -)
-> 0, 0xb3325d71
vdp_get_proc_address(1, 58, -)
-> 0, 0xb33297ed
vdp_get_proc_address(1, 62, -)
-> 0, 0xb3326dc9
vdp_get_proc_address(1, 63, -)
-> 0, 0xb3325cd5
vdp_get_proc_address(1, 64, -)
-> 0, 0xb3326ced
vdp_get_proc_address(1, 65, -)
-> 0, 0xb3326bb5
vdp_get_proc_address(1, 66, -)
-> 0, 0xb3325c4d
vdp_get_proc_address(1, 4096, -)
-> 0, 0xb3326add
vdp_preemption_callback_register(1, 0xb5f08c7d, (nil))
-> 0
vdp_video_mixer_query_feature_support(1, 11, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 0, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 0, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 1, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 2, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 3, -)
-> 0, 0
vdp_video_mixer_query_feature_support(1, 4, -)
-> 0, 0
vdp_video_mixer_query_attribute_support(1, 6, -)
-> 0, 0
vdp_video_surface_query_capabilities(1, 0, -, -, -)
-> 0, 1, 8192, 8192
vdp_video_surface_query_capabilities(1, 1, -, -, -)
-> 0, 0, 8192, 8192
vdp_video_surface_query_capabilities(1, 2, -, -, -)
-> 0, 0, 8192, 8192
vdp_video_surface_query_get_put_bits_y_cb_cr_capabilities(1, 1, 3, -)
-> 0, 0
vdp_video_surface_query_get_put_bits_y_cb_cr_capabilities(1, 0, 1, -)
-> 0, 0
vdp_output_surface_query_capabilities(1, 0, -, -, -)
-> 0, 1, 8192, 8192
vdp_output_surface_query_capabilities(1, 1, -, -, -)
-> 0, 1, 8192, 8192
vdp_output_surface_query_capabilities(1, 2, -, -, -)
-> 0, 0, 8192, 8192
vdp_output_surface_query_capabilities(1, 3, -, -, -)
-> 0, 0, 8192, 8192
vdp_presentation_queue_target_create_x11(1, 6291459, -)
-> 0, 2
vdp_presentation_queue_create(1, 2, -)
-> 0, 3
vdp_presentation_queue_set_background_color(3, {0,010000, 0,020000, 0,030000, 1,000000})
-> 0
vdp_output_surface_create(1, 0, 1280, 720, -)
-> 0, 4
vdp_output_surface_create(1, 0, 1280, 720, -)
-> 0, 5
vdp_output_surface_create(1, 0, 1280, 720, -)
-> 0, 6
vdp_output_surface_create(1, 0, 1280, 720, -)
-> 0, 7
vdp_output_surface_create(1, 0, 1280, 720, -)
-> 0, 8
vdp_bitmap_surface_create(1, 0, 1280, 720, 1, -)
-> 0, 9
vdp_bitmap_surface_put_bits_native(9, {0xb5f28768}, {5120}, {0, 0, 1280, 720})
-> 0
vdp_presentation_queue_block_until_surface_idle(3, 4, -)
-> 0, 113557220330
vdp_output_surface_render_bitmap_surface(4, {0, 0, 1280, 720}, 4294967295, {0, 0, 0, 0}, NULL, NULL, 0)
-> 0
vdp_presentation_queue_display(3, 4, 0, 0, 0)
./vdrcmd: Zeile 1: 2393 Speicherzugriffsfehler LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libX11.so LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/vdpau: ./vdr -v /tmp -P'streamdev-client' -P'softhddevice -d :0.0 -v vdpau'