comparison 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
comparison
equal deleted inserted replaced
7:5c00b239e1c8 8:66c77f9ba9b9
1 #include <stdlib.h> 1 #include <stdlib.h>
2 #include <stdio.h> 2 #include <stdio.h>
3 #include <fcntl.h> 3 #include <fcntl.h>
4 #include <unistd.h> 4 #include <unistd.h>
5 #include <sys/ioctl.h> 5 #include <sys/ioctl.h>
6 #include <sys/mman.h>
6 7
7 #include "linux/fb.h" 8 #include "linux/fb.h"
8 9
9 #include "common.h" 10 #include "common.h"
10 11
30 printf("id %s\n", sif.id); 31 printf("id %s\n", sif.id);
31 printf("type %d, aux %d\n", sif.type, sif.type_aux); 32 printf("type %d, aux %d\n", sif.type, sif.type_aux);
32 printf("visual %d\n", sif.visual); 33 printf("visual %d\n", sif.visual);
33 printf("accel %d\n", sif.accel); 34 printf("accel %d\n", sif.accel);
34 printf("line length %d\n", sif.line_length); 35 printf("line length %d\n", sif.line_length);
36 printf("mem %d\n", sif.smem_len);
35 37
36 struct fb_var_screeninfo siv; 38 struct fb_var_screeninfo siv;
37 if (ioctl(fd, FBIOGET_VSCREENINFO, &siv) < 0) { 39 if (ioctl(fd, FBIOGET_VSCREENINFO, &siv) < 0) {
38 perror(""); 40 perror("");
39 exit(EXIT_FAILURE); 41 exit(EXIT_FAILURE);
40 } 42 }
41 43
42 printf("res x %d y %d\n", siv.xres, siv.yres); 44 printf("res x %d y %d\n", siv.xres, siv.yres);
43 printf("bpp %d\n", siv.bits_per_pixel); 45 printf("bpp %d\n", siv.bits_per_pixel);
44 46
47 size_t fb_mem_size = siv.xres * siv.yres * siv.bits_per_pixel / 8;
48 void *fb_mem = mmap(NULL, fb_mem_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
49 if (fb_mem == MAP_FAILED) {
50 perror("");
51 exit(EXIT_FAILURE);
52 }
53
45 printf("-------------\n"); 54 printf("-------------\n");
46 fflush(stdout); 55 fflush(stdout);
47 56
48 jpg_buf_t jpg_buf = build_jpg_from_fb(fd, siv.xres, siv.yres); 57 jpg_buf_t jpg_buf = build_jpg_from_fb((unsigned char *)fb_mem, siv.xres, siv.yres, siv.bits_per_pixel);
49 58
59 munmap(fb_mem, fb_mem_size);
50 close(fd); 60 close(fd);
51 61
52 printf("jpg %ld\n", jpg_buf.size); 62 printf("jpg %ld\n", jpg_buf.size);
53 63
54 FILE *f = fopen("test.jpg", "wb"); 64 FILE *f = fopen("test.jpg", "wb");

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.