AiO Screengrabber für PPC Boxen ... Video & Grafik Screenshots

  • Hi @All,


    nachdem mich das screenshot erstellen auf den PPC Boxen schon lange gestört hat, haben wir hier mal ein wenig nachgeholfen.


    In meinen Augen gab es bisher 2 Probleme dabei:


    1.) Kein Screenshot ausserhalb Enigma
    Wenn man über das Web-If einen OSD-Shot macht, hat man die Darstellung von Enigma ganz sauber, wenn man versucht eine andere Anwendung zu "fotografieren" wie z.B. den Videotext, den Tuxfrodo oder was auch immer, hat man verschobene Farben und nichts passt.
    Das Problem hier ist der Grafiktreiber der Dream der im 8 Bit Modus die verwendeten Farben nicht wieder her geben kann, was ein bekanntes Problem ist. Deshalb funktionieren ja auch Tools wie fbshot nicht sauber. Dies haben wir nun umgangen indem wir direkt aus dem Haupt-RAM (/dev/mem) die Farbtabelle auslesen und nicht nur den Framebuffer abfragen, wie es jedes andere Screenshot-Tool tut.


    2.) Entweder TV Screen oder Grafikscreen
    Entweder macht man einen Screenshot des Fernsehbildes oder der Einblendung, sprich der Grafik. Beides auf einmal geht nicht. Auch das haben wir geändert.



    Der AiO(AllInOne) Screenshooter erzeugt nun Screenshots von dem was ihr auf dem Fernseher seht, egal was ihr gerade macht. Egal ob der 16Bit Modus aktiv ist (PicViewer, Konqueror, etc.) oder der 8 Bit Modus (Enigma, Tuxtxt, Tuxfrodo usw.) ihr bekommt immer ein 24 Bit Bitmap mit korrekten Farben. Ausserdem habt ihr jedesmal auch das Fernsehbild dabei, sofern die Grafikanwendung diese nicht überdeckt. Wenn ihr mit dem AiO Screengrabber einen Screenshot macht und ihr habt gerade das Enigma Menü offen, dann seht ihr auf eurem Pic auch das Enigma Menü mit dem darunter liegenden Fernsehbild.


    Das ganze ist eine einzelne Binary die irgendwo auf die Box kommt (bei 500-7000 würde sich /var/bin anbieten, bei der 7020 /usr/bin). Die Datei sollte ausführbare Rechte bekommen und schon könnt ihr per Telnet Screenshots erzeugen. Durch den aufruf von


    Code
    1. grab


    Wird einfach ein screenshot.bmp im /tmp Verzeichnis erzeugt. Alternativ könnt ihr auch:



    Code
    1. grab /pfad/dateiname.bmp


    verwenden. Somit könnt ihr den Screenshot z.B. direkt auf die Festplatte mit einem bestimmten Namen speichern.



    Das Ganze sollte auf allen PPC Boxen funktionieren, da wir aber direkt auf den Hauptspeicher zugreifen und der Grafik Bereich darin immer erst erkannt werden muss und auf jeder Box anders liegt, wäre ich über Feedbacks dankbar, da ich es nicht auf allen Boxen getestet habe (nur 7020,7000). Sollte aber auch auf den "kleinen" Boxen (500,5620) keine Probleme machen.


    Viel Spass damit


    Seddi


    //EDIT
    Ok, ich hätte es auf der 500er doch testen sollen ;) Da gibts wohl noch Probleme ...

  • hi,


    sehr cool, vor allem wenn man an skins arbeitet und diese im gesamtbild zeigen möchte!

    Box: DM-7020 HD
    Image: DMM Original OE2.0

  • Quote

    Original von tomdulix
    hi,


    sehr cool, vor allem wenn man an skins arbeitet und diese im gesamtbild zeigen möchte!


    Yep, dafür hab ichs gemacht damit man sich hierfür Windows-Tools mit Werbeeinblendungen in den Bildern sparen kann. a) arbeite ich zu 99% unter Linux und b) mag ichs nicht wenn Screenshots durch Werbezeilen verschandelt werden (sorry jungs, soll eure Leistung nicht schmälern, aber ich seh das nun mal so).


    Ausserdem hat es den Vorteil das man endlich auch mal von anderen Anwendungen (Tuxtxt, Tuxwetter, Flexmenü, TuxFrodo, etc. ... ) mal ordentliche Screenies machen kann.

  • OK, hier nochmal eine Version zum testen. Inzwischen wird das Videobild (wenn nötig) sauber und bikubisch auf die 720x576 des Framebuffers hochgerechnet. Das resizing benötigt zwar ein bisschen Zeit, dafür ist das Ergebnis aber sauber.


    Die DM500/5620 wird (noch) nich unterstützt, da bin ich immer noch auf der Suche nach der korrekten Farbtabelle im Speicher, da FBIOGETCMAP auch bei den Boxen die falsche Tabelle zurückliefert. Auf der 7000/7020 funktioniert das jedoch problemlos.

  • So, gleich nochmal ne Version hinterher.


    Diese sollte nun auch auf der 500 und 5620 funktionieren, habs allerdings bisher nur auf der 500er getestet. Bei der 500/5620 (Vulcan Chip) ist es noch etwas schwieriger an die richtigen farben des Framebuffers zu kommen, da wundert mich es nicht das der Treiber die nicht hergibt wie er eigentlich sollte. Bei dem Vulcan Chip liegt die Farbpalette im 16 Bit YUV Format vor, sprich wir müssen hier erstmal die Farben wandeln. Aber auch das ist machbar und funktioniert. Dank an tmbinc für die richtigen Tips wo und wie ich die Farbe finden kann ;)


    Weiterhin hab ich ein par Command-Switches mit reingebaut, ihr bekommt diese mit


    grab -h


    angezeigt. So kann man z.B. mit "grab -v" nur das Videobild speichern und mit "grab -o" nur das OSD (Framebuffer). Das kann zwar das WebIf auch, aber eben nicht mit den korrekten Farben, falls ein Plugin (wie Tuxtxt, C64, Flexmenü, etc.) läuft das eigene Farbpaletten definiert. Daher könnte das auch mal ganz nützlich sein.


    Ausserdem wird nun auch das Videobild bei einer anamorphen 16:9 Übertragung korrigiert und eine Letterbox draus gemacht.