Amlogic SOC Ausgabedevice für Odroid C1 & WeTek Play?

  • Moin,


    Sowohl der Odroid C1 als auch die WeTek Play verwenden einen Amlogic SOC für den es Code (bzw. hier ) zur HW-beschleunigten Ausgabe von Video gibt. Kodi/XBMC verwendet diesen offensichtlich. Leider scheint es aber sonst (ohne Kodi) keine Lösung zu geben um Videos bzw. DVB-Stream ausgeben zu können. Verwenden alle Odroid C1 & WeTek Play Nutzer hier Kodi?


    Ich verwende eine WeTek Play unter Ubuntu mit (selbst gebautem) VDR als headless server. Das funktioniert extrem gut. Noch besser wäre es jedoch auch eine Ausgabe am HDMI zu bekommen - analog zu softhddevice oder rpihddevice. Leider bin ich nicht beschlagen genug um aus den libs ein Ausgabedevice-Plugin zu basteln. Hat sonst keiner Interesse daran?


    Danke & Gruß, ollo


  • Es ist scheinbar möglich mit Mali GPUs über sunxi ein softhddevice zu bauen.


    Nicht, dass ich den Thread ins offTopic bringen möchte, muss aber immer mal wieder was klarstellen: Die MaliGPU spielt für softhddevice auf sunxi devices überhaupt keine Rolle, da sie nur der 3D Beschleunigung dient. Und ja, softhddevice funktioniert auf diesen Boxen inzwischen sehr gut.


    Gruß Andreas

  • Moin,


    ichamthe1st - Danke, über den thread bin ich auch schon gestolpert. Bin schon gespannt.


    rell - Könntest Du mehr Details preisgeben? Sunix nutzt ja die CedarX VPU der Allwinner SOC. Die AmLogic SOC nutzen doch aber eine andere VPU?! Bohrt MLD das softhhddevice Plugin um libamcodec-Support auf? Das wäre ja super!


    Gruß, ollo


  • rell - Könntest Du mehr Details preisgeben? Sunix nutzt ja die CedarX VPU der Allwinner SOC. Die AmLogic SOC nutzen doch aber eine andere VPU?! Bohrt MLD das softhhddevice Plugin um libamcodec-Support auf? Das wäre ja super!


    Sunxi:
    - Video Engine (bekannt als CedarX, VPU, ...) des A10/A20 sorgt fürs hardwarebeschleunigte Dekodieren <- open source
    - Mixer Processor (G2D) des A10/A20 sorgt fürs hardwarebeschleunigte 2D blitting/ filling <- open source
    - Display Engine (Display Ausgabetreiber z.B. über HDMI) stellt das ganze dar <- open source
    - Mali GPU (3D Engine für z.B. OpenGLES) wird bei libvdpau-sunxi/ softhddevice gar nicht genutzt. <- closed source!


    Die Mali GPU wird z.B. bei XBMC benötigt, da XBMC das OSD 3D-beschleunigt darstellt. Da sich aber noch niemand an eine Implementierung von libvdpau-sunxi als decoder in XBMC gemacht hat und die "alten" Entwickler bzw. das TeamXBMC keine Lust haben mit Allwinner closed source binaries zu hantieren, gibts da auf Linuxseite keine Unterstützung für sunxi. Außerdem beachte man die offensichtliche Verletzung der GPL in den CedarX binaries (zumindest in den alten)!!


    AmLogic: Habe ich keine Ahnung ;)
    MLD wird sich halt der entsprechenden Bibliotheken bedienen, die mit einer API angesprochen werden können. Ich glaube nicht, dass es da offene Software gibt. Welches Ausgabedevice oder welcher wrapper dann dafür genutzt wird, wissen die sicher ;)


    Ich hoffe, ich konnte die Sunxi Seite aufklären, obwohl ich das hier gefühlt schon öfter mal so geschrieben habe.
    Aber da du der Threadstarter bist, habe ich auch kein Problem mit den hijacking :)


    Gruß
    Andreas

  • Inzwischen habe ich auch eine WetekPlay in Betrieb und eigentlich wäre der Weg zu einem schlanken Ausgabedevice à la rpihddevice kein allzu grosser: Amlogic stellt Bibliotheken zur Verfügung, welche direkt TS akzeptieren (ein einfaches Beispiel ist hier zu finden) - damit verhält sich die Hardware praktisch wie eine FF-Karte, was den Aufwand für ein Plugin, zumindest in der Theorie, in Grenzen hält.


    Etwas prekärer schaut es auf der Grafikseite aus. Gemäss ARM unterstützt die Mali GPU zwar OpenVG, womit man den OSD-Teil vom rpihddevice praktisch 1:1 übernehmen könnte. Allerdings scheint Amlogic oder ARM bei den Treibern zu geizen und stellt das API nicht zur Verfügung ... somit fällt der GPU-Support fürs OSD schon mal ins Wasser. Auch die unbeschleunigte Darstellung via OpenGLES wird schwierig, da die in Openelec enthaltenen Userspace-Treiber für X11 geschrieben und die Framebuffer-Varianten nicht verfügbar sind.


    Irgendwie schade, dass hier so viel unter Verschluss gehalten wird - es gibt keine offiziellen Repos für aktuelle Treiber, selbst OpenELEC bezieht die Sourcen über irgendwelchen Dropbox-Links. Die Leute von Wetek sind zwar sehr hilfsbereit und antworten rasch, aber auch sie scheinen der Geheimniskrämerei von Amlogic und ARM ausgeliefert zu sein.


    Gruss
    Thomas


  • Etwas prekärer schaut es auf der Grafikseite aus. Gemäss ARM unterstützt die Mali GPU zwar OpenVG, womit man den OSD-Teil vom rpihddevice praktisch 1:1 übernehmen könnte. Allerdings scheint Amlogic oder ARM bei den Treibern zu geizen und stellt das API nicht zur Verfügung ... somit fällt der GPU-Support fürs OSD schon mal ins Wasser. Auch die unbeschleunigte Darstellung via OpenGLES wird schwierig, da die in Openelec enthaltenen Userspace-Treiber für X11 geschrieben und die Framebuffer-Varianten nicht verfügbar sind.


    Ich blick den Unterschied zwischen den Ausgabedevices noch nicht und der Möglichkeit, wie sie Hardwarebeschleunigung nutzen.
    Video ist klar. Aber OSD ...
    Rpihddevice nutzt OpenVG für 2D beschleunigte Aufgaben um das OSD darzustellen? Welche Aktionen werden z.B. von OpenVG übernommen? Wie ist der Ablauf beim rpihddevice?

    Zitat

    Use GPU accelerated OSD: Use GPU capabilities to draw the on screen display.
    Disable acceleration in case of OSD problems to use VDR's internal rendering
    and report error to the author.


    D.h. ,die GPU nimmt das VDR interne rendering ab? Was ist damit gemeint? Bzw. wo ist der Einstieg.
    Und wie ist das im Vergleich zu softhddevice/ vdpau, wo ich meine mich inzwischen ein bißchen auszukennen. Teilweise :p


    Und generell frage ich mich oft, was der Grund ist/war, nicht gleich auf VDPAU (wenn auch nur als "Wrapper") aufzusetzen und Board spezifische Backends zu schreiben statt programmspezifischen Ausgabedevices?
    Danke für eine kurze Aufklärung.


    Gruß Andreas

  • Hallo Thomas,


    danke für die Ausführung, sehr erhellend :tup


    Würde denn der OpenGLES X11 Treiber auch mit Wayland funktionieren? Das wäre deutlich schlanker als X11 und so ein möglicher Ausweg??


    Danke & Gruß, ollo

  • Ich blick den Unterschied zwischen den Ausgabedevices noch nicht und der Möglichkeit, wie sie Hardwarebeschleunigung nutzen.
    Video ist klar. Aber OSD ...

    Der VDR sieht grundsätzlich zwei Arten von OSD vor:


    1) Das Low Level oder RAW-OSD: Der VDR Core implementiert alle Zeichnungsfunktionen welche die Skins aufrufen und zeichnet auf interne Pixmaps. Dabei muss er sich um Dinge wie Transparenz, Antialiasing oder auch nur schon das Rendern von Text selbst kümmern. Bei einem Flush liefert der VDR dem Ausgabedevice das fixfertig gerenderte OSD als Pixmap ("Bild"), welches von diesem nur noch dem Videobild überlagert werden muss. Das Ausgabeplugin muss sich dabei um keinerlei Rendering kümmern und überlässt alles dem VDR und somit der CPU. Die meisten Ausgabeplugins, u.a. auch softhddevice, nutzen diese Variante.


    2) High Level OSD: Etwas komplizierter wird es, wenn die GPU das Zeichnen übernehmen soll. Dabei überschreibt das Ausgabedevice die Default-Implementation der Zeichenfunktionen und übergibt, im Falle vom rpihddevice, diese Aufgabe mittels OpenVG der GPU. Das beinhaltet nicht nur das Zeichnen der Grundformen (Pixel, Rechteck, Ellipse, Bogen) sondern auch das Darstellen von Text oder das Handling und Überlagern von verschiedenen Ebenen (Pixmaps). Das klingt aufwändig und ist es auch, bietet aber, gerade beim Raspberry Pi, nicht nur immense Geschwindigkeitsvorteile, sondern ist auch qualitativ der Default-Implementation des VDR überlegen. (perfektes Scaling und Anti-Aliasing) Das dvbhddevice unterstützt Zeichnungsfunktionen auf OSD-Ebene, High Level-Support auch für Pixmaps bietet - nach meinem Wissen - bisher nur das rpihddevice.


    Und generell frage ich mich oft, was der Grund ist/war, nicht gleich auf VDPAU (wenn auch nur als "Wrapper") aufzusetzen und Board spezifische Backends zu schreiben statt programmspezifischen Ausgabedevices?

    Der VDR hantiert "bloss" mit TS-Paketen und gibt diese ans Ausgabedevice weiter, damit ist die grundlegende Schnittstelle für Ausgabedevices cDevice::PlayTS() (und deren Varianten), wie sie auch HD-FFs unterstützen. Wenn nun die Amlogic-Treiber genau so eine Schnittstelle anbieten, warum sollte dann jemand den Umweg über vdpau gehen? Das mag für eine Desktop-Grafikkarte unter X11 sinnvoll sein, ist aber IMHO auf einem Embedded-Board der falsche Ansatz.


    Würde denn der OpenGLES X11 Treiber auch mit Wayland funktionieren? Das wäre deutlich schlanker als X11 und so ein möglicher Ausweg??

    Keine Ahnung, damit kenne ich mich zu wenig aus. Aber X11/Wayland sind für mich bei einem solchen Projekt kein Thema (siehe oben).


    Wenn wirklich Bedarf besteht könnte man problemlos auch mal mit den Jungs von Wetek sprechen.

    Der Kontakt zu Wetek ist nicht das Problem - die Leute dort sind schnell und hilfsbereit! Aber ich denke auch Wetek ist zu klein, um bei ARM/Amlogic in Sachen Treiber was zu bewegen...


    Gruss
    Thomas

  • Hallo Thomas,


    dann wäre also nicht-beschleunigtes OSD durchaus per framebuffer möglich?


    Der AmLogic SOC hat ja 2x A9 Core und somit mehr Bums als z.B. der RasPi1 und somit sollte das doch kein großes Problem oder gar Hindernis für ein Ausgabe-Plugin darstellen?!?


    Gruß, ollo

  • Danke Thomas für die Erläuterung. Jetzt bin ich (etwas) schlauer :p


    VDPAU war hier nur als Beispiel gedacht, eine standardisierte API zu nutzen. Wie ein (Embedded) Device dies dann im Backend umsetzt, ist dann die andere Sache. Im Falle von sunxi endet das zwar in einem sehr gut nutzbaren, aber halt nicht allzu schönem und arg workaround-artigem Hack :)
    Im Umkehrschluß heißt das für mich jetzt, dass das High-Level OSD nur über VDR (falls irgendwann geplant), ein extra Plugin oder eben über das Ausgabeplugin selbst umgesetzt werden kann, das direkt die Klassen vom VDR Core überschreiben kann. Eine Implementierung im driver backend ist gar nicht möglich, weil das ja schon das fertige Bild erhalten muss. Bei softhddevice müsste man das also im Plugin selbst machen, wenn man es haben will.
    Wäre es nicht generell sinnvoll das als vdr-plugin-openvg/... -osd auszugliedern und dann den Ausgabedevices zur Verfügung zu stellen?


    Back to topic:
    Man könnte den Amlogic sicher auch ohne High-Level-OSD nutzen, wenn die Hardware es ermöglicht, 2 Layer per alpha zu überblenden, so wie das bei den Allwinner geht. Das blitting (des fertigen Surface) klappt hier z.B. auch hardwarebeschleunigt.
    Wenn man auf OpenVG verzichtet, wäre auch ein Weg über softhddevice denkbar, wofür allerdings ein eigenes libvdpau-backend notwendig wäre.


    Gruß Andreas

  • Laut Beispiel kann Amlogic OSD mit Alpha.


    Entweder werden Framebuffer 0 und 1 gemischt oder Framebuffer Inhalt mit Video.


    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

  • Wegen der Wetek und dem Ausgabe-Plugin in der MLD, da ist ein kleines Missverständnis aufgekommen es ist ein Ausgabe-Plugin in Entwicklung aber noch nicht raus. Es wird auch noch eine weile dauern bis es da ist. Wollte das nur sagen weil ich mich da im MLD Forum ein wenig falsch ausgedrückt habe.

    VDR1 | MLD 5.4 64Bit Stable | ASRock Q1900M | 4GB Ram | Intel VA-API | Digital Devices DuoFlex DVB-S2 | SSD 64GB

    MLD 5.1 Server | Banana Pi | Fhem |

    Test VDR: MLD 5.4 64Bit Unstable | ASRock Q1900M | 4GB RAM | Intel VA-API | OctopusNet S2-2

  • Openelec ... nutzen auf der WeTeck Play offenbar Xorg zur Ausgabe.


    Wie kommst du zu der Aussage? Ich kann gerade nicht selbst nachsehen, habe aber meine Zweifel.


    Siehe hier:

    Code
    # Displayserver to use (x11 / no)
        DISPLAYSERVER="no"


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Wegen der Wetek ... es ist ein Ausgabe-Plugin in Entwicklung aber noch nicht raus.


    Cool, da freue ich mich schon drauf. Habe ein OdroidC1 hier rumliegen und könnte auch testen, falls bedarf besteht. :)


    Viele Grüße, Uwe

  • Inzwischen habe ich keine Zweifel mehr. Da läuft kein X-Server in OpenELEC auf der Wetek. Es muss also auch ohne gehen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

Jetzt mitmachen!

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