strip fbgrab

Wünsche, Anträge, Fehlermeldungen
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

strip fbgrab

Beitrag von just_me »

Hi,
the wikipage at:
http://wiki.tuxbox-cvs.sourceforge.net/Fbshot
zeigt auf ein ungestripptes Binary von fbshot. Dies macht fbshot um mehr als 900kByte größer als es ein müßte:

> unrar x fbshot.rar
> ls -l fbshot
-rw-r--r-- 1 fe users 1031792 2004-04-08 17:19 fbshot
> strip fbshot
-rw-r--r-- 1 fe users 65696 2005-11-28 16:55 fbshot

es wäre schön, wenn im Wiki sowohl ein Link auf das gestrippte Binary wie auch auf die Sourcen läge.
Das Binary vielleicht als .tar.gz verpackt damit die Zugriffsberechtigungen nicht verloren gehen.
Thx,
Frieder
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

fbshot 2m 40s downto ?

Beitrag von just_me »

ein Screenshot des Radio Displays (ohne OSD) dauert bei mir etwa 2min 40s.

Könnte jemand (ich selbst habe die Entwicklungsumgebung nicht) den beigefügten Patch mal testen? Auf dem PC läufts dadurch (insbesondere durch Z_DEFAULT_COMPRESSION) etwa doppelt so schnell.
Die etwas höhere PNG Dateigröße liesse sich durch die eingesparten Bytes beim Strippen legitimieren?

Code: Alles auswählen

diff -u fbshot.c.orig fbshot.c
--- fbshot.c.orig       2005-11-28 13:23:03.000000000 +0100
+++ fbshot.c    2005-11-28 19:14:45.000000000 +0100
@@ -58,14 +58,14 @@


 /* some conversion macros */
-#define RED565(x)    ((((x) >> (11 )) & 0x1f) << 3)
-#define GREEN565(x)  ((((x) >> (5 )) & 0x3f) << 2)
-#define BLUE565(x)   ((((x) >> (0)) & 0x1f) << 3)
-
-#define ALPHA1555(x) ((((x) >> (15)) & 0x1 ) << 0)
-#define RED1555(x)   ((((x) >> (10)) & 0x1f) << 3)
-#define GREEN1555(x) ((((x) >> (5 )) & 0x1f) << 3)
-#define BLUE1555(x)  ((((x) >> (0 )) & 0x1f) << 3)
+#define RED565(x)     (((x) >> 8) & (0x1f << 3))
+#define GREEN565(x)   (((x) >> 3) & (0x3f << 2))
+#define BLUE565(x)   ((((x) >> 0) & 0x1f) << 3)
+
+#define ALPHA1555(x) ((((x) >> 15) & 0x1 ) << 0)
+#define RED1555(x)    (((x) >> 7) & (0x1f << 3))
+#define GREEN1555(x)  (((x) >> 2) & (0x1f << 3))
+#define BLUE1555(x)  ((((x) >> 0) & 0x1f) << 3)

 struct picture{
   int xres,yres;
@@ -312,7 +312,7 @@

   png_init_io(png_ptr, OUTfd);

-  png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
+  png_set_compression_level(png_ptr, Z_DEFAULT_COMPRESSION);

   row_pointers=(png_bytep*)malloc(sizeof(png_bytep)*pict->yres);

mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

Ich habe es einmal getestet.

Geht wirklich um einiges schneller :D

Code: Alles auswählen

-rw-r--r--  1 nobody nogroup 217470 2005-11-29 20:10 /daten/screenshots/radio_test_alt.png
-rw-r--r--  1 nobody nogroup 242344 2005-11-29 20:15 /daten/screenshots/radio_test_neu.png
Die Dateigröße ist für mich ok, da ich die Screenshots eh noch weiterbearbeite.

Wer es mal testen möchte: http://yadi.org/download/fbshot.tar.gz


PS:
just_me hat geschrieben:es wäre schön, wenn im Wiki sowohl ein Link auf das gestrippte Binary wie auch auf die Sourcen läge.
Ist geändert!

Gruß
mogway
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

hi,
klasse! Habe ich das jetzt richtig verstanden das damit ein Screenshot vom laufenden Programm erzeugt werden kann oder war das nur ein Beispiel mit dem Radiohintergrund?
Was heisst denn 'um einiges schneller'? 2Min 40s finde ich jetzt nicht besonders schnell...ok, fuer den kompletten Hintergrund...interessant faende ich die Zeit fuer das OSD..ein optimiertes fbshot fuer den Frambuffer haette echt was http://forum.tuxbox-cvs.sourceforge.net ... ght=fbshot

cu,
peter
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

petgun hat geschrieben:Was heisst denn 'um einiges schneller'? 2Min 40s finde ich jetzt nicht besonders schnell...ok
Schnell ist es leider noch nicht, es dauert damit immer noch etwa 40 Sekunden:

Code: Alles auswählen

/tmp # time ./fbshot tt.png
Framebuffer /dev/fb/0 is 414720 bytes.
Grabbing 720x576 ...
done.
Writing tt.png ...done.
real    0m 39.10s
user    0m 18.34s
sys     0m 1.78s
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

just_me hat geschrieben: Schnell ist es leider noch nicht, es dauert damit immer noch etwa 40 Sekunden
..schade..aber vielleicht faellt Dir ja noch mehr ein.
Kennst Du zB. UltraVNC mit dem VNC Hook Treiber? Da geht selbst auf sehr schwachen Rechnern die Post ab und wechselnde Bildschirminhalte werden (fast) in realtime uebertragen....schade das es so etwas fuer die Dbox zur Uebertragung des OSD nicht gibt...

viel Erfolg,
peter
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

petgun hat geschrieben:..schade..aber vielleicht faellt Dir ja noch mehr ein.
Mir scheint der Parameter für die Puffergröße in der png library ist mit 8k etwas gross angegeben.
Da die CPU 4 k Datencache hat läuft die Benutzung von 8k hier auf die komplette Entleerung des Caches hinaus.
Eventuell fährt man hier mit 1k, 2k oder 4k besser:

Code: Alles auswählen

> diff -U 15 dbox2/cdkroot/include/pngconf.h.orig dbox2/cdkroot/include/pngconf.h
--- dbox2/cdkroot/include/pngconf.h.orig        2005-11-30 12:27:57.000000000 +0100
+++ dbox2/cdkroot/include/pngconf.h     2005-11-30 13:03:43.000000000 +0100
@@ -67,31 +67,31 @@

 /* This is the size of the compression buffer, and thus the size of
  * an IDAT chunk.  Make this whatever size you feel is best for your
  * machine.  One of these will be allocated per png_struct.  When this
  * is full, it writes the data to the disk, and does some other
  * calculations.  Making this an extremely small size will slow
  * the library down, but you may want to experiment to determine
  * where it becomes significant, if you are concerned with memory
  * usage.  Note that zlib allocates at least 32Kb also.  For readers,
  * this describes the size of the buffer available to read the data in.
  * Unless this gets smaller than the size of a row (compressed),
  * it should not make much difference how big this is.
  */

 #ifndef PNG_ZBUF_SIZE
-#  define PNG_ZBUF_SIZE 8192
+#  define PNG_ZBUF_SIZE 2048
 #endif
Kennst Du zB. UltraVNC mit dem VNC Hook Treiber? Da geht selbst auf ...
Nein, guter Tipp, aber ich nehme an, dass Alles das nicht direkt browserkompatibel ist leider nur eine schmale Benutzerbasis sehen würde...
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

just_me hat geschrieben:aber ich nehme an, dass Alles das nicht direkt browserkompatibel ist leider nur eine schmale Benutzerbasis sehen würde...
..sorry, verstehe ich jetzt nicht so ganz den Satz. Mir gehts darum (siehe Link) die Box vollwertig remote nutzen zu koennen...das scheitert imo nur an der schnellen Uebertragung des OSD. Full remote wuerde aber sicher nicht nur mir gefallen...und ich glaube auch das es einen echten Mehrwert/Nutzen darstellen wuerde.
yjogol
Developer
Beiträge: 809
Registriert: Montag 4. Juli 2005, 18:45

Beitrag von yjogol »

Ich habe mal einen Parameter "-q" eingebaut. Dann wird Z_BEST_SPEED statt Z_BEST_COMPRESSION verwendet.

Ich hab es mal mit Einstellungen->Diverse probiert

normal: 40220 Bytes und 20 Sekunden
quick: 57384 Bytes und 5 Sekunden

Gruß
yjogol
FAQ zu YWeb unter http://www.yjogol.de