graphlcd (base, vdr-plugin) touchcol branch (archiv)

  • neu:

    • positions- und dimensionsparameter (x/y/x1/y1/x2/y2; width/height) werden nun zur laufzeit ausgewertet und nicht mehr wie bisher nur beim parsen
    • unterstuetzung fuer plugin 'span' (siehe screenshot und beispiel-xml-fetzen dazu)

    achtung: die verwendung der kombination span/music-plugins ist (zumindest bei mir) sehr instabil (bei vdr-restart oder beim wechsel von einem anderen mediaplayer (zb. xinelibout) zum music-plugin kann ein segfault auftreten. problem: ein thread, der (annahme von mir) im music-plugin gestartet wird nach beendigung eines anderen threads verwendet noch einen bereits invalidierten zeiger auf ein VDR player-object weiter. wenn dem so ist und das span-plugin dann noch daten abfraegt: BUMM. habe mit einem untergriff (abfrage, ob cControl-object gueltig ist) zumindest verhindern koennen, dass das music-plugin bei hin-und-herspringen v. musikauswahl und abspielmodus das span-plugin zum crashen bringt, aber weiter kann ich nicht eingreifen (zumindest habe ich nix weiter gefunden).


    anmerkung:
    initialisert wird das span-plugin mit der allerersten ServiceIsAvailable-abfrage!
    -> zb: {ServiceIsAvailable:span,bands=20,delay=250,falloff=4} legt fest, dass 20 baender angelegt werden sollen, der delay zwischen 2 abfragen auf 250 ms und der falloff auf 4 eingestellt werden.
    diese auswertung der parameter erfolgt nur ein einziges mal! (performance)


    beispiel:

  • neu:

    • unterstuetzung eines simplen includes v. (xml-)dateien. genauso als ob der enthaltene textstream direkt in der skin-definition waere. (es wird 1:1 inkludiert ohne pre-processing oder steuerung ueber ev. conditions. dh: bei einem <block condition="<cond>"><include path="<path>"/></block> wird das include-file IMMER inkludiert, egal ob die condition zieht oder nicht.
    • hoch- und gleichziehen der versionstrings der 3 teilbibliotheken auf 2.1.0.
    • versionsnummer des graphlcd-base paketes ist jetzt 0.3.0.
    • bug fix: syslog wird nicht mehr mit 'Invalid numeric value'-meldungen zugemuellt.

    beispiele zum <include/>:

    Code
    <include path="somefile.inc"/>
    <include path="{SkinPath}/somefile.inc"/>


    diese zwei angaben bewirken dasselbe (ein relativer pfad ist automatisch relativ zum skin-pfad.


    ACHTUNG:
    das vdr-plugin-graphlcd muss wegen der aenderung der versionsstrings neu kompiliert werden.

  • hi,


    bin gerade dabei einen graphlcd Treiber für das hier zu schreiben. Ist zwar eigentlich ein Billigst-DPF (der dafür nix taugt) aber funktioniert mit dem DPF-Hack brauchbar als LCD-Screen.
    Hab den Treiber erst mal für graphlcd 1.9 gemacht, dann aber das hier entdeckt und am WE mal auf den coltouch branch umgesetzt.
    Klappt soweit auch (zumindest mit showpic wird alles richtig angezeigt, Test mit plugin in vdr steht noch aus).
    Allerdings sind mit ein paar Details noch nicht ganz klar.

    • GetDriverFeature(): Feature "depth" gibt Farbauflösung zurück - hab hier ne "24" drin, also 24 Bit, 8 Bit/Pixel (richtig?), das Display kann aber "nur" 16 Bit (5:6:5). Bringt es was hier "16" zurückzugeben? Rechnet graphlcd dann entsprechend um oder sind die Werte die an SetPixel() übergeben werden immer 8 Bit/Pixel?
    • GetBackgroundColor(): muß ich das implementieren? Gebe hier "GLCD::cColor::Black" zurück. Wenn ich das hier im Thread richtig verstanden habe, ist das ja der default Wert für Color-LCD - bin mir da aber nicht sicher.
    • Das Display kann keine einzelnen Pixel ansteuern, sondern der Update geht über einen Blit-Befehl immer für ein Rechteck von Pixel. Gibt es irgendwo ein "dirty rectangle", dass man in Refresh() abfragen kann, um nicht immer den komplette Screen zu übertragen? Wenn nicht, mach ich mir das selbst in SetPixel()...


    Gruß
    superelchi

    #1: yaVDR 0.5 - Asus A5IONT-I, 4 GB Ram - 750 GB 2,5" HD - DD Cine S2 V6 - Silverstone Sugo SG06 - Pearl DPF - Hama MCE Remote
    #2: yaVDR 0.5 - Intel DH67BL, 4 GB Ram - Asus GT610 - 40 GB SSD - 500 GB 2,5" HD - DD Cine S2 V5.5 - Silverstone Milo ML03 - Pearl DPF - Hama MCE Remote

  • bin gerade dabei einen graphlcd Treiber für das hier zu schreiben.


    Klasse! Bin sehr gespannt.


    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

  • Zitat

    GetDriverFeature(): Feature "depth" gibt Farbauflösung zurück - hab hier ne "24" drin, also 24 Bit, 8 Bit/Pixel (richtig?), das Display kann aber "nur" 16 Bit (5:6:5). Bringt es was hier "16" zurückzugeben? Rechnet graphlcd dann entsprechend um oder sind die Werte die an SetPixel() übergeben werden immer 8 Bit/Pixel?

    ja, 16 zurueckgeben (intern wird immer mit 32bit gerechnet, egal welches display, nach aussen soll dieser wert dann, falls es dann doch jmd benoetigen sollte fuer irgendetwas, den korrekten wert zurueckgeben).


    Zitat

    GetBackgroundColor(): muß ich das implementieren? Gebe hier "GLCD::cColor::Black" zurück. Wenn ich das hier im Thread richtig verstanden habe, ist das ja der default Wert für Color-LCD - bin mir da aber nicht sicher.

    wird in deiner klasse nicht benoetigt, da die methode der basisklasse dafuer ausreicht (die gibt bereits GLCD::cColor::Black zurueck).

    Zitat

    Das Display kann keine einzelnen Pixel ansteuern, sondern der Update geht über einen Blit-Befehl immer für ein Rechteck von Pixel. Gibt es irgendwo ein "dirty rectangle", dass man in Refresh() abfragen kann, um nicht immer den komplette Screen zu übertragen? Wenn nicht, mach ich mir das selbst in SetPixel()...

    'standard' bounding box funktionalitaet gibts nicht (wird nur bei wenigen displays benoetigt. daher einfach selber in SetPixel() setzen/aktualisieren.


  • also wenn du jemanden suchst irgendwas zu testen: Ich bin dabei! ;D


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • Ich habe seit gestern das DPF von Pearl bekommen. Ist total billig Ware aber für ein USB LCD Display für 3 Euro kann man auch nicht viel erwarten :)
    Der Hack hat nicht auf Anhieb funktioniert aber es läuft jetzt.


    Habe das ganze mit graphlcd und lcd4linux zum laufen gebracht und funktioniert gut.
    bei graphlcd habe ich als driver Image angegeben so das dieser ein Image im tmp Verzeichniss erstellt. Parallel läuft ein Bash Script welches die pbm Datei mittels convert in eine png Datei wandelt.


    lcd4linux lässt diese png Datei dann anzeigen. Nicht perfekt aber läuft wunderbar :)


    Wer noch Infos braucht vielleicht kann ich helfen.


    Grüße Martin

  • bei graphlcd habe ich als driver Image angegeben so das dieser ein Image im tmp Verzeichniss erstellt. Parallel läuft ein Bash Script welches die pbm Datei mittels convert in eine png Datei wandelt.
    lcd4linux lässt diese png Datei dann anzeigen. Nicht perfekt aber läuft wunderbar :)


    Witziger Ansatz. Finde ich kreativ.


    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

  • Witziger Ansatz. Finde ich kreativ.


    Man muss sich nur zu helfen wissen :)


    Es hat aber auch einen praktischen Ansatz, warum ich diesen weg mit lcd4linux wähle.
    Der Server läuft 24/7 und wenn vdr aus ist dann lasse ich Uhrzeit und Datum auf dem Display anzeigen. Oder ich kann radiotray starten und lasse mir den aktuellen Sender usw. anzeigen.
    Funktioniert schon recht gut. Habe mir ein paar php Scripte geschrieben die die Texte als png abspeichern.


    Und dieses png (sei es von vdr, radiotray, Datum Uhzeit, what ever) lasse ich immer mit lcd4linux anzeigen. So habe ich immer einen Dienst der das Bild anzeigen lässt und unterschiedliche Dienste die das Bild erstellen.


    Grüße Martin

  • Wäre es möglich einfach mal ein paar Bilder hochzuladen. Die ganze Thematik reizt mich gerade unheimlich. ;)
    Sozusagen als visuelle Unterstützung. :D

    VDR_1:

    Asus J3455-M, GT 710, SSD 240GB, 8GB DDR3, 1x DvbSky S950 with yavdr-ansible (testing)

    VDR_2:

    AsRock J3455, GT 710, SSD 120GB + SATA 400GB, 8GB DDR3, 1x DvbSky S952 with yavdr-ansible (testing)

    VDR_3_Testing:

    AtomiPi with Intel Atom x5-Z8350, 2GB DDR3, 16GB eMMC, 1x Sundtekt DVB-S with yavdr-ansible (testing)


  • Mach ich heute Abend wenn ich es noch schaffe sonst nächste Woche.
    Wie gesagt was ich bisher habe ist
    graphlcd
    Datum Uhzeit
    radiotray


    Allerdings muss ich sagen, dass graphlcd zu klein ist um das vom sofo noch zu lesen.
    Du hast zwar 320x240 Auflösung aber bei nur 2,4" wird das doch recht klein mit graphlcd.


    Grüße Martin

  • Super Idee, das mit dem Image Treiber von graphlcd zu lösen!
    Aber wenn ich das recht sehe, gehts so nur in schwarz/weiß?
    Deshalb arbeite ich grad an einem Treiber der Farbe unterstützt - wie gesagt, geht schon ganz gut mit showpic.
    Leider hab ich zwei Tage in den Sand gesetzt, weil ich graphlcd unter yaVDR 0.30a nicht zum laufen bringe.
    Bin gerade dabei ein easyVDR zu installieren. Mal sehn, was dann passiert...


    Wenn das Display zu klein ist: bei dem Preis könnte man ja mal versuchen ein paar davon zusammenzuschalten...


    Gruß
    superelchi

    #1: yaVDR 0.5 - Asus A5IONT-I, 4 GB Ram - 750 GB 2,5" HD - DD Cine S2 V6 - Silverstone Sugo SG06 - Pearl DPF - Hama MCE Remote
    #2: yaVDR 0.5 - Intel DH67BL, 4 GB Ram - Asus GT610 - 40 GB SSD - 500 GB 2,5" HD - DD Cine S2 V5.5 - Silverstone Milo ML03 - Pearl DPF - Hama MCE Remote

  • Mist. Kriegs nicht gebacken.


    Folgendes gemacht:
    Neuinstall easyVDR 0.8.06
    graphlcd-base (touchcol branch) --> /usr/local/src/graphlcd-base.git.touchcol.
    graphlcd-plugin (touchcol branch) --> /usr/local/src/VDR/PLUGINS/src/graphlcd-0.3.0 (symlink auf ./graphlcd).


    In /usr/local/src/graphlcd-base.git.touchcol:

    Code
    make all
    make install
    ldconfig


    In /usr/local/src/VDR:

    Code
    make plugins
    cp -r PLUGINS/src/graphlcd/graphlcd /etc/vdr/plugins
    cp PLUGINS/lib/libvdr-graphlcd.so.1.7.0 /usr/vdr/plugins


    Läuft alles ohne Fehler durch.
    Graphlcd im easyVDR Menü enabled (zum Testen mit Treiber simlcd).


    Nach Neustarten vom VDR-Backend kommt im syslog:


    Code
    Aug  5 16:40:50 (none) vdr: [15200] ERROR: /usr/lib/libglcdskin.so.1: undefined symbol: _ZN4GLCD7cBitmap9DrawPixelEiiNS_6eColorE


    Kann mir jemand auf die Sprünge helfen?



    Gruß
    superelchi

    #1: yaVDR 0.5 - Asus A5IONT-I, 4 GB Ram - 750 GB 2,5" HD - DD Cine S2 V6 - Silverstone Sugo SG06 - Pearl DPF - Hama MCE Remote
    #2: yaVDR 0.5 - Intel DH67BL, 4 GB Ram - Asus GT610 - 40 GB SSD - 500 GB 2,5" HD - DD Cine S2 V5.5 - Silverstone Milo ML03 - Pearl DPF - Hama MCE Remote

    Einmal editiert, zuletzt von superelchi ()

  • hast du das ziel geaendert, wohin die .so-dateieen von graphlcd-base installiert werden (default: /usr/local/lib). wenn nein: /usr/lib/libglcdskin.so.1 laesst auf eine alte installation schliessen, die da hineinfunkt. wenn ja: /usr/lib/ ueberpruefen, ob da noch alte .so herumliegen, die hineinfunken koennten.


    ps: habe natuerlich nicht widerstehen koennen und mir auch gestern so ein spielzeug bestellt ... bin schon gespannt ...

  • Aug 5 16:40:50 (none) vdr: [15200] ERROR: /usr/lib/libglcdskin.so.1: undefined symbol: _ZN4GLCD7cBitmap9DrawPixelEiiNS_6eColorE


    Dafür hast du jetzt eine andere Distribution installiert? So nach dem Motto: "Oh ich habe einen platten Reifen, ich wechsle mal zyklisch alle Reifen und sehe dann ob das Problem mit wandert."


    Da gibt es 3 Möglichkeiten, die zu diesem Problem führen können.
    1. name mangeling: Eine C++-Routine ruft eine Funktion einer in C geschriebenen Bibliothek auf. Dann fehlt das Klammern der dazugehörigen include Direktive in eine extern "C" Anweisung.
    2. Versions-Probleme: Die Library ist sehr wohl in C++ geschrieben, aber die Funktion fehlt, oder hat andere Argumente.
    3. Link-Probleme: Die Library ist bei der Link-Anweisung gar nicht angegeben worden.


    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

  • hast du das ziel geaendert, wohin die .so-dateieen von graphlcd-base installiert werden (default: /usr/local/lib). wenn nein: /usr/lib/libglcdskin.so.1 laesst auf eine alte installation schliessen, die da hineinfunkt. wenn ja: /usr/lib/ ueberpruefen, ob da noch alte .so herumliegen, die hineinfunken koennten.


    Das wäre dann mein Punkt 2.


    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

  • Hier nun ein paar Bilder.
    Man sieht sehr schön den Größenvergleich zum dbox2 Display. Die Displays haben ungefähr die gleiche Größe.
    Man erkennt meiner Meinung nach auch das Problem von graphlcd. Ich denke das Ziel war es, ein OSD darzustellen, was für so ein kleines Display zu viel ist. Beim dbox2 Display hat man die wichtigsten Informationen auf dem Display und kann es gut erkennen beim graphlcd ist es leider zu klein.
    Aber gut das ist ein andere Diskusion. Auf jeden Fall Funktioniert es erstmal :)


    Grüße Martin

  • Beim dbox2 Display hat man die wichtigsten Informationen auf dem Display und kann es gut erkennen beim graphlcd ist es leider zu klein.


    Deswegen sind wir hier im Skin Branch ;)


    GraphLCD kann z.B. auch Screens (mit Tricks), d.h. z.B. 20 Sekunden Bildschirmfüllend den Sendungstitel, dann 20 Sekunden den Subtitel und dann 20 Sekunden das Logo. Mit juckts auch schon in den Fingern, ich glaube heute Abend bestelle ich auch.


    cu

  • Oh mann! Wer lesen kann ist klar im Vorteil. Hätt ich auch selbst sehen müssen, dass da "/usr/lib" und nicht "/usr/local/lib/" steht!
    Danke wastl, jetzt gehts!


    gda: ist sowieso nur ein Testsystem zum spielen. Ich habs erst mit yaVDR probiert, da ich das auch im Produktivsystem laufen habe.
    Aber mit der Kompilierung über dpkg-buildpackage hab ichs nicht so. Also mal ein gutes, altes easyVDR installiert. Das kenn ich noch von früher und hier gehts noch so richtig "klassisch" mit "make plugins" und so...


    Gruß
    superelchi

    #1: yaVDR 0.5 - Asus A5IONT-I, 4 GB Ram - 750 GB 2,5" HD - DD Cine S2 V6 - Silverstone Sugo SG06 - Pearl DPF - Hama MCE Remote
    #2: yaVDR 0.5 - Intel DH67BL, 4 GB Ram - Asus GT610 - 40 GB SSD - 500 GB 2,5" HD - DD Cine S2 V5.5 - Silverstone Milo ML03 - Pearl DPF - Hama MCE Remote

  • hier mal ein paar Bilder.
    Alles so schön bunt hier!


    Gruß
    superelchi

Jetzt mitmachen!

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