Mercurial > hg > minimon
comparison jpg.c @ 8:66c77f9ba9b9
convert rgba -> rgb
author | Peter Meerwald <pmeerw@pmeerw.net> |
---|---|
date | Sat, 14 May 2011 21:05:59 +0200 |
parents | 3819ecaf0f14 |
children | 078dc69945ad |
comparison
equal
deleted
inserted
replaced
7:5c00b239e1c8 | 8:66c77f9ba9b9 |
---|---|
90 | 90 |
91 dest->pub.next_output_byte = dest->buffer = *outbuffer; | 91 dest->pub.next_output_byte = dest->buffer = *outbuffer; |
92 dest->pub.free_in_buffer = dest->bufsize = *outsize; | 92 dest->pub.free_in_buffer = dest->bufsize = *outsize; |
93 } | 93 } |
94 | 94 |
95 static void convert_rgba_to_rgb(unsigned char *buf, unsigned char *fb_mem, int width) { | |
96 int i; | |
97 for (i = 0; i < width; i++) { | |
98 *buf++ = *fb_mem++; | |
99 *buf++ = *fb_mem++; | |
100 *buf++ = *fb_mem++; | |
101 fb_mem++; | |
102 } | |
103 } | |
95 | 104 |
96 | 105 jpg_buf_t build_jpg_from_fb(unsigned char *fb_mem, int width, int height, int bits_per_pixel) { |
97 jpg_buf_t build_jpg_from_fb(int fb, int width, int height) { | |
98 int scanline; | 106 int scanline; |
99 struct jpeg_compress_struct cinfo; | 107 struct jpeg_compress_struct cinfo; |
100 struct jpeg_error_mgr jerr; | 108 struct jpeg_error_mgr jerr; |
101 | 109 |
102 cinfo.err = jpeg_std_error(&jerr); | 110 cinfo.err = jpeg_std_error(&jerr); |
114 cinfo.in_color_space = JCS_RGB; | 122 cinfo.in_color_space = JCS_RGB; |
115 jpeg_set_defaults(&cinfo); | 123 jpeg_set_defaults(&cinfo); |
116 | 124 |
117 jpeg_start_compress(&cinfo, TRUE); | 125 jpeg_start_compress(&cinfo, TRUE); |
118 | 126 |
119 JSAMPLE *buf = malloc(width * 4); | 127 JSAMPLE *buf = (JSAMPLE *) malloc(width * 3); |
120 JSAMPROW row_ptr[1]; | 128 JSAMPROW row_ptr[1] = {buf}; |
121 row_ptr[0] = buf; | |
122 for (scanline = 0; scanline < height; scanline++) { | 129 for (scanline = 0; scanline < height; scanline++) { |
123 read(fb, buf, width*4); | 130 convert_rgba_to_rgb(buf, &fb_mem[scanline * width * 4], width); |
124 jpeg_write_scanlines(&cinfo, row_ptr, 1); | 131 jpeg_write_scanlines(&cinfo, row_ptr, 1); |
125 } | 132 } |
126 free(buf); | 133 free(buf); |
127 | 134 |
128 jpeg_finish_compress(&cinfo); | 135 jpeg_finish_compress(&cinfo); |