亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fv1.c.nl

?? 在Linux控制臺下顯示JPEG圖像
?? NL
字號:
  1 /*  2  * $Id: fv.c  3  * $Desp: draw jpeg to framebuffer  4  * $Author: rockins  5  * $Date: Wed Jan  3 20:15:49 CST 2007  6  */  7   8 #include <stdio.h>  9 #include <stdlib.h> 10 #include <fcntl.h> 11 #include <linux/fb.h> 12 #include <sys/types.h> 13 #include <sys/stat.h> 14 #include <sys/mman.h> 15 #include <jpeglib.h> 16 #include <jerror.h> 17  18 #define	FB_DEV	"/dev/fb0" 19  20 /***************** function declaration ******************/ 21 void            usage(char *msg); 22 unsigned short  RGB888toRGB565(unsigned char red, 23 							   unsigned char green, unsigned char blue); 24 int             fb_open(char *fb_device); 25 int             fb_close(int fd); 26 int             fb_stat(int fd, int *width, int *height, int *depth); 27 void           *fb_mmap(int fd, unsigned int screensize); 28 int             fb_munmap(void *start, size_t length); 29 int             fb_pixel(void *fbmem, int width, int height, 30 						 int x, int y, unsigned short color); 31  32 /************ function implementation ********************/ 33 int 34 main(int argc, char *argv[]) 35 { 36 	/* 37 	 * declaration for jpeg decompression 38 	 */ 39 	struct jpeg_decompress_struct cinfo; 40 	struct jpeg_error_mgr jerr; 41 	FILE           *infile; 42 	unsigned char  *buffer; 43  44 	/* 45 	 * declaration for framebuffer device 46 	 */ 47 	int             fbdev; 48 	char           *fb_device; 49 	unsigned char  *fbmem; 50 	unsigned int    screensize; 51 	unsigned int    fb_width; 52 	unsigned int    fb_height; 53 	unsigned int    fb_depth; 54 	unsigned int    x; 55 	unsigned int    y; 56  57 	/* 58 	 * check auguments 59 	 */ 60 	if (argc != 2) { 61 		usage("insuffient auguments"); 62 		exit(-1); 63 	} 64  65 	/* 66 	 * open framebuffer device 67 	 */ 68 	if ((fb_device = getenv("FRAMEBUFFER")) == NULL) 69 		fb_device = FB_DEV; 70 	fbdev = fb_open(fb_device); 71  72 	/* 73 	 * get status of framebuffer device 74 	 */ 75 	fb_stat(fbdev, &fb_width, &fb_height, &fb_depth); 76  77 	/* 78 	 * map framebuffer device to shared memory 79 	 */ 80 	screensize = fb_width * fb_height; 81 	fbmem = fb_mmap(fbdev, screensize); 82  83 	/* 84 	 * open input jpeg file  85 	 */ 86 	if ((infile = fopen(argv[1], "rb")) == NULL) { 87 		fprintf(stderr, "open %s failed\n", argv[1]); 88 		exit(-1); 89 	} 90  91 	/* 92 	 * init jpeg decompress object error handler 93 	 */ 94 	cinfo.err = jpeg_std_error(&jerr); 95 	jpeg_create_decompress(&cinfo); 96  97 	/* 98 	 * bind jpeg decompress object to infile 99 	 */100 	jpeg_stdio_src(&cinfo, infile);101 102 103 	/*104 	 * read jpeg header105 	 */106 	jpeg_read_header(&cinfo, TRUE);107 108 	/*109 	 * decompress process.110 	 * note: after jpeg_start_decompress() is called111 	 * the dimension infomation will be known,112 	 * so allocate memory buffer for scanline immediately113 	 */114 	jpeg_start_decompress(&cinfo);115 	if ((cinfo.output_width > fb_width) ||116 		(cinfo.output_height > fb_height)) {117 		printf("too large JPEG file,cannot display\n");118 		return (-1);119 	}120 121 	buffer = (unsigned char *) malloc(cinfo.output_width *122 									  cinfo.output_components);123 	y = 0;124 	while (cinfo.output_scanline < cinfo.output_height) {125 		jpeg_read_scanlines(&cinfo, &buffer, 1);126 		if (fb_depth == 16) {127 			unsigned short  color;128 			for (x = 0; x < cinfo.output_width; x++) {129 				color = RGB888toRGB565(buffer[x * 3], 130 						buffer[x * 3 + 1], buffer[x * 3 + 2]);131 				fb_pixel(fbmem, fb_width, fb_height, x, y, color);132 			}133 		} else if (fb_depth == 24) {134 			memcpy((unsigned char *) fbmem + y * fb_width * 3,135 				   buffer, cinfo.output_width * cinfo.output_components);136 		}137 		y++;					// next scanline138 	}139 140 	/*141 	 * finish decompress, destroy decompress object142 	 */143 	jpeg_finish_decompress(&cinfo);144 	jpeg_destroy_decompress(&cinfo);145 146 	/*147 	 * release memory buffer148 	 */149 	free(buffer);150 151 	/*152 	 * close jpeg inputing file153 	 */154 	fclose(infile);155 156 	/*157 	 * unmap framebuffer's shared memory158 	 */159 	fb_munmap(fbmem, screensize);160 161 	/*162 	 * close framebuffer device163 	 */164 	fb_close(fbdev);165 166 	return (0);167 }168 169 void170 usage(char *msg)171 {172 	fprintf(stderr, "%s\n", msg);173 	printf("Usage: fv some-jpeg-file.jpg\n");174 }175 176 /*177  * convert 24bit RGB888 to 16bit RGB565 color format178  */179 unsigned short180 RGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue)181 {182 	unsigned short  B = (blue >> 3) & 0x001F;183 	unsigned short  G = ((green >> 3) << 5) & 0x07E0;184 	unsigned short  R = ((red >> 3) << 11) & 0xF800;185 186 	return (unsigned short) (R | G | B);187 }188 189 /*190  * open framebuffer device.191  * return positive file descriptor if success,192  * else return -1.193  */194 int195 fb_open(char *fb_device)196 {197 	int             fd;198 199 	if ((fd = open(fb_device, O_RDWR)) < 0) {200 		perror(__func__);201 		return (-1);202 	}203 	return (fd);204 }205 206 /*207  * get framebuffer's width,height,and depth.208  * return 0 if success, else return -1.209  */210 int211 fb_stat(int fd, int *width, int *height, int *depth)212 {213 	struct fb_fix_screeninfo fb_finfo;214 	struct fb_var_screeninfo fb_vinfo;215 216 	if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo)) {217 		perror(__func__);218 		return (-1);219 	}220 221 	if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo)) {222 		perror(__func__);223 		return (-1);224 	}225 226 	*width = fb_vinfo.xres;227 	*height = fb_vinfo.yres;228 	*depth = fb_vinfo.bits_per_pixel;229 230 	return (0);231 }232 233 /*234  * map shared memory to framebuffer device.235  * return maped memory if success,236  * else return -1, as mmap dose.237  */238 void *239 fb_mmap(int fd, unsigned int screensize)240 {241 	void *	fbmem;242 243 	if ((fbmem = mmap(0, screensize, PROT_READ | PROT_WRITE,244 					  MAP_SHARED, fd, 0)) == MAP_FAILED) {245 		perror(__func__);246 		return (void *) (-1);247 	}248 249 	return (fbmem);250 }251 252 /*253  * unmap map memory for framebuffer device.254  */255 int256 fb_munmap(void *start, size_t length)257 {258 	return (munmap(start, length));259 }260 261 /*262  * close framebuffer device263  */264 int265 fb_close(int fd)266 {267 	return (close(fd));268 }269 270 /*271  * display a pixel on the framebuffer device.272  * fbmem is the starting memory of framebuffer,273  * width and height are dimension of framebuffer,274  * x and y are the coordinates to display,275  * color is the pixel's color value.276  * return 0 if success, otherwise return -1.277  */278 int279 fb_pixel(void *fbmem, int width, int height,280 		 int x, int y, unsigned short color)281 {282 	if ((x > width) || (y > height))283 		return (-1);284 285 	unsigned short *dst = ((unsigned short *) fbmem + y * width + x);286 287 	*dst = color;288 	return (0);289 }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产aⅴ原创 | 91精品午夜视频| 精品久久久久久久久久久久久久久久久 | 久久尤物电影视频在线观看| 国产精品国产三级国产普通话蜜臀| 日韩国产欧美在线视频| 97久久精品人人做人人爽50路| 欧美一区二区三区影视| 亚洲色图在线播放| 国产一区二区不卡| 欧美精品第一页| 一区二区三区四区不卡视频| 国产成人在线视频播放| 日韩一区二区精品葵司在线| 一区二区成人在线| 成人深夜在线观看| 国产欧美精品在线观看| 久久aⅴ国产欧美74aaa| 欧美日韩1234| 亚洲午夜在线电影| 欧美在线你懂得| 中文字幕亚洲区| 成人午夜精品一区二区三区| 欧美精品一区二区三区蜜桃| 午夜激情一区二区三区| 欧美日韩国产高清一区二区三区 | 免费在线看成人av| 欧美色倩网站大全免费| 日韩一区中文字幕| 91亚洲精品一区二区乱码| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 精品成a人在线观看| 丝袜诱惑制服诱惑色一区在线观看| 97se亚洲国产综合自在线| 国产精品欧美久久久久无广告| 国产精品1024| 中国色在线观看另类| 成人黄色免费短视频| 国产精品热久久久久夜色精品三区 | 日韩高清国产一区在线| 欧美日韩国产精品自在自线| 天堂资源在线中文精品| 宅男在线国产精品| 久久99精品国产麻豆婷婷| 日韩免费看网站| 国产精品自产自拍| 国产精品三级久久久久三级| 床上的激情91.| 国产精品对白交换视频| 色屁屁一区二区| 午夜精品一区二区三区电影天堂 | 成人免费黄色大片| 综合激情网...| 91激情五月电影| 日韩专区中文字幕一区二区| 日韩亚洲欧美在线| 狠狠色丁香婷婷综合久久片| 久久久99精品免费观看不卡| 99久久精品国产导航| 亚洲自拍偷拍九九九| 91精品国产一区二区人妖| 激情六月婷婷久久| 中文字幕制服丝袜成人av| 在线一区二区观看| 麻豆一区二区三| 国产精品午夜电影| 欧美日韩情趣电影| 精品亚洲国内自在自线福利| 国产精品国产三级国产普通话三级| 欧美在线免费观看亚洲| 国产一区在线观看视频| 亚洲精品视频在线看| 在线电影国产精品| 国产成都精品91一区二区三| 亚洲影视在线播放| 国产日韩欧美一区二区三区综合 | 亚洲国产日韩精品| 国产69精品久久久久毛片| 国产欧美日韩三级| 色综合激情五月| 国产精品三级视频| 精品免费视频一区二区| 欧美sm极限捆绑bd| 亚洲精品在线电影| 精品成人一区二区| 久久久久久久久99精品| 久久午夜电影网| 久久久激情视频| 欧美国产欧美亚州国产日韩mv天天看完整| 久久久综合视频| 2022国产精品视频| 久久九九全国免费| 亚洲欧洲三级电影| 亚洲激情图片qvod| 亚洲成av人影院在线观看网| 天天影视网天天综合色在线播放| 日韩综合小视频| 激情伊人五月天久久综合| 国产精品18久久久久久久久| 国产成人鲁色资源国产91色综| 99久久精品国产观看| 欧美性一级生活| 日韩视频在线你懂得| 国产午夜精品在线观看| 国产精品网站在线观看| 一区二区三区精品在线| 奇米色一区二区三区四区| 激情综合色播五月| 94色蜜桃网一区二区三区| 欧美日韩国产中文| www一区二区| 亚洲精品久久久久久国产精华液| 丝袜美腿一区二区三区| 狠狠色综合日日| 97超碰欧美中文字幕| 日韩一区二区电影| 中文字幕中文字幕一区二区| 日韩激情av在线| 丁香啪啪综合成人亚洲小说| 欧美色精品在线视频| 国产网站一区二区三区| 亚洲国产精品一区二区www在线| 久久精品久久精品| 91久久国产综合久久| 日韩欧美国产不卡| 亚洲欧美在线观看| 精品一区二区av| 欧美视频中文一区二区三区在线观看| 欧美大片在线观看一区| 亚洲日本在线看| 国内精品嫩模私拍在线| 色94色欧美sute亚洲线路一ni| 日韩欧美高清dvd碟片| 一区二区成人在线| 风间由美中文字幕在线看视频国产欧美| 欧美在线观看一区二区| 中文字幕第一区二区| 日韩国产一区二| 91黄视频在线观看| 国产精品你懂的在线| 美女任你摸久久| 欧美日韩日本视频| 日韩毛片精品高清免费| 国产精品一区二区黑丝| 777xxx欧美| 亚洲曰韩产成在线| 99麻豆久久久国产精品免费 | 亚洲午夜久久久久久久久电影院| 国产在线播精品第三| 在线成人免费观看| 亚洲一区二区视频在线| 91啪在线观看| 亚洲欧洲精品一区二区三区不卡| 狠狠色2019综合网| 日韩欧美国产一二三区| 视频一区在线视频| 欧美午夜理伦三级在线观看| 亚洲精品国产a| 99久久综合国产精品| 国产色产综合色产在线视频| 精品一区二区三区免费视频| 日韩一级大片在线观看| 免费成人小视频| 日韩视频一区二区| 免费看日韩精品| 日韩一本二本av| 免费成人av资源网| 欧美va日韩va| 国产一区二区精品久久99| 精品免费日韩av| 精品一区二区三区欧美| 久久色在线观看| 国产精品亚洲第一| 国产日韩欧美综合在线| 成人av电影在线播放| 国产精品高潮呻吟| 欧美在线免费播放| 亚洲第一主播视频| 91精品欧美福利在线观看| 日本不卡一区二区三区| 91精品国产高清一区二区三区| 波多野结衣一区二区三区| 中文字幕高清一区| 色综合色综合色综合色综合色综合| 国产精品国产精品国产专区不蜜| 99国产精品99久久久久久| 亚洲日本va午夜在线影院| 99热精品国产| 午夜私人影院久久久久| 日韩欧美精品三级| 国产精品资源在线观看| 亚洲欧美视频一区| 欧美性大战久久久| 精品在线观看免费| 国产色产综合色产在线视频| 色av综合在线| 国内成人精品2018免费看| 最好看的中文字幕久久| 欧美三级日韩三级国产三级| 久久国产婷婷国产香蕉|