Mercurial > hg > minimon
diff fbt.c @ 8:66c77f9ba9b9
convert rgba -> rgb
author | Peter Meerwald <pmeerw@pmeerw.net> |
---|---|
date | Sat, 14 May 2011 21:05:59 +0200 |
parents | e8957085fe8a |
children | c7af696b6221 |
line wrap: on
line diff
--- a/fbt.c Tue May 10 19:22:13 2011 +0200 +++ b/fbt.c Sat May 14 21:05:59 2011 +0200 @@ -3,6 +3,7 @@ #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> +#include <sys/mman.h> #include "linux/fb.h" @@ -32,6 +33,7 @@ printf("visual %d\n", sif.visual); printf("accel %d\n", sif.accel); printf("line length %d\n", sif.line_length); + printf("mem %d\n", sif.smem_len); struct fb_var_screeninfo siv; if (ioctl(fd, FBIOGET_VSCREENINFO, &siv) < 0) { @@ -42,11 +44,19 @@ printf("res x %d y %d\n", siv.xres, siv.yres); printf("bpp %d\n", siv.bits_per_pixel); + size_t fb_mem_size = siv.xres * siv.yres * siv.bits_per_pixel / 8; + void *fb_mem = mmap(NULL, fb_mem_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (fb_mem == MAP_FAILED) { + perror(""); + exit(EXIT_FAILURE); + } + printf("-------------\n"); fflush(stdout); - jpg_buf_t jpg_buf = build_jpg_from_fb(fd, siv.xres, siv.yres); + jpg_buf_t jpg_buf = build_jpg_from_fb((unsigned char *)fb_mem, siv.xres, siv.yres, siv.bits_per_pixel); + munmap(fb_mem, fb_mem_size); close(fd); printf("jpg %ld\n", jpg_buf.size);