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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fv2.c

?? 在Linux控制臺下顯示JPEG圖像
?? C
字號:
/* * $Id: fv.c * $Desp: draw jpeg to framebuffer * $Author: rockins * $Date: Wed Jan  3 20:15:49 CST 2007 */#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <linux/fb.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <jpeglib.h>#include <jerror.h>#define	FB_DEV	"/dev/fb0"/***************** function declaration ******************/void            usage(char *msg);unsigned short  RGB888toRGB565(unsigned char red,							   unsigned char green, unsigned char blue);int             fb_open(char *fb_device);int             fb_close(int fd);int             fb_stat(int fd, int *width, int *height, int *depth);void           *fb_mmap(int fd, unsigned int screensize);int             fb_munmap(void *start, size_t length);int             fb_pixel(void *fbmem, int width, int height,						 int x, int y, unsigned short color);/************ function implementation ********************/intmain(int argc, char *argv[]){	/*	 * declaration for jpeg decompression	 */	struct jpeg_decompress_struct cinfo;	struct jpeg_error_mgr jerr;	FILE           *infile;	unsigned char  *buffer;	/*	 * declaration for framebuffer device	 */	int             fbdev;	char           *fb_device;	unsigned char  *fbmem;	unsigned int    screensize;	unsigned int    fb_width;	unsigned int    fb_height;	unsigned int    fb_depth;	unsigned int    x;	unsigned int    y;	/*	 * check auguments	 */	if (argc != 2) {		usage("insuffient auguments");		exit(-1);	}	/*	 * open framebuffer device	 */	if ((fb_device = getenv("FRAMEBUFFER")) == NULL)		fb_device = FB_DEV;	fbdev = fb_open(fb_device);	/*	 * get status of framebuffer device	 */	fb_stat(fbdev, &fb_width, &fb_height, &fb_depth);	/*	 * map framebuffer device to shared memory	 */	screensize = fb_width * fb_height * fb_depth / 8;	fbmem = fb_mmap(fbdev, screensize);	/*	 * open input jpeg file 	 */	if ((infile = fopen(argv[1], "rb")) == NULL) {		fprintf(stderr, "open %s failed\n", argv[1]);		exit(-1);	}	/*	 * init jpeg decompress object error handler	 */	cinfo.err = jpeg_std_error(&jerr);	jpeg_create_decompress(&cinfo);	/*	 * bind jpeg decompress object to infile	 */	jpeg_stdio_src(&cinfo, infile);	/*	 * read jpeg header	 */	jpeg_read_header(&cinfo, TRUE);	/*	 * decompress process.	 * note: after jpeg_start_decompress() is called	 * the dimension infomation will be known,	 * so allocate memory buffer for scanline immediately	 */	jpeg_start_decompress(&cinfo);	if ((cinfo.output_width > fb_width) ||		(cinfo.output_height > fb_height)) {		printf("too large JPEG file,cannot display\n");		return (-1);	}	buffer = (unsigned char *) malloc(cinfo.output_width *									  cinfo.output_components);	y = 0;	while (cinfo.output_scanline < cinfo.output_height) {		jpeg_read_scanlines(&cinfo, &buffer, 1);		if (fb_depth == 16) {			unsigned short  color;			for (x = 0; x < cinfo.output_width; x++) {				color = RGB888toRGB565(buffer[x * 3], 						buffer[x * 3 + 1], buffer[x * 3 + 2]);				fb_pixel(fbmem, fb_width, fb_height, x, y, color);			}		} else if (fb_depth == 24) {			memcpy((unsigned char *) fbmem + y * fb_width * 3,				   buffer, cinfo.output_width * cinfo.output_components);		}		y++;					// next scanline	}	/*	 * finish decompress, destroy decompress object	 */	jpeg_finish_decompress(&cinfo);	jpeg_destroy_decompress(&cinfo);	/*	 * release memory buffer	 */	free(buffer);	/*	 * close jpeg inputing file	 */	fclose(infile);	/*	 * unmap framebuffer's shared memory	 */	fb_munmap(fbmem, screensize);	/*	 * close framebuffer device	 */	fb_close(fbdev);	return (0);}voidusage(char *msg){	fprintf(stderr, "%s\n", msg);	printf("Usage: fv some-jpeg-file.jpg\n");}/* * convert 24bit RGB888 to 16bit RGB565 color format */unsigned shortRGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue){	unsigned short  B = (blue >> 3) & 0x001F;	unsigned short  G = ((green >> 3) << 5) & 0x07E0;	unsigned short  R = ((red >> 3) << 11) & 0xF800;	return (unsigned short) (R | G | B);}/* * open framebuffer device. * return positive file descriptor if success, * else return -1. */intfb_open(char *fb_device){	int             fd;	if ((fd = open(fb_device, O_RDWR)) < 0) {		perror(__func__);		return (-1);	}	return (fd);}/* * get framebuffer's width,height,and depth. * return 0 if success, else return -1. */intfb_stat(int fd, int *width, int *height, int *depth){	struct fb_fix_screeninfo fb_finfo;	struct fb_var_screeninfo fb_vinfo;	if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo)) {		perror(__func__);		return (-1);	}	if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo)) {		perror(__func__);		return (-1);	}	*width = fb_vinfo.xres;	*height = fb_vinfo.yres;	*depth = fb_vinfo.bits_per_pixel;	return (0);}/* * map shared memory to framebuffer device. * return maped memory if success, * else return -1, as mmap dose. */void *fb_mmap(int fd, unsigned int screensize){	void *	fbmem;	if ((fbmem = mmap(0, screensize, PROT_READ | PROT_WRITE,					  MAP_SHARED, fd, 0)) == MAP_FAILED) {		perror(__func__);		return (void *) (-1);	}	return (fbmem);}/* * unmap map memory for framebuffer device. */intfb_munmap(void *start, size_t length){	return (munmap(start, length));}/* * close framebuffer device */intfb_close(int fd){	return (close(fd));}/* * display a pixel on the framebuffer device. * fbmem is the starting memory of framebuffer, * width and height are dimension of framebuffer, * x and y are the coordinates to display, * color is the pixel's color value. * return 0 if success, otherwise return -1. */intfb_pixel(void *fbmem, int width, int height,		 int x, int y, unsigned short color){	if ((x > width) || (y > height))		return (-1);	unsigned short *dst = ((unsigned short *) fbmem + y * width + x);	*dst = color;	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美日韩在线一区| 日韩欧美国产一区二区在线播放| 欧美亚洲尤物久久| 9191久久久久久久久久久| 欧美亚洲日本国产| 一区二区三区四区精品在线视频| 亚洲一区二区三区爽爽爽爽爽| 国产精品1区2区| 2017欧美狠狠色| 免费人成在线不卡| 欧美日韩国产精品自在自线| 欧美日韩精品福利| 麻豆中文一区二区| 欧美精品亚洲二区| 91原创在线视频| 日本一区二区三区四区在线视频| 美腿丝袜一区二区三区| 色狠狠色狠狠综合| 亚洲人成网站精品片在线观看 | 成人黄色软件下载| 制服丝袜一区二区三区| 视频一区二区中文字幕| 欧美三级电影在线看| 亚洲人成人一区二区在线观看 | 精品少妇一区二区三区| 蜜臀av性久久久久av蜜臀妖精 | 国产精品网站在线| 99久久99久久精品国产片果冻| 亚洲国产精品精华液ab| 91在线国产观看| 欧美激情一区二区三区在线| 一区二区三区国产| 蜜乳av一区二区| 色诱视频网站一区| 亚洲人成7777| 成人午夜免费av| 国产欧美久久久精品影院| 日韩精品一区二| 国产一区二区三区| 欧美人体做爰大胆视频| 亚洲黄色尤物视频| 欧美麻豆精品久久久久久| 夜夜嗨av一区二区三区四季av | 国产亚洲va综合人人澡精品| 91.com在线观看| 亚洲一二三四区| 日韩电影在线观看电影| 国产伦精一区二区三区| 欧美一级黄色大片| 麻豆精品在线视频| 在线观看亚洲精品| 国产盗摄精品一区二区三区在线| 国产欧美日韩中文久久| 免费观看在线综合| 91精品国产免费久久综合| 亚洲综合一区在线| 欧美天天综合网| 大胆欧美人体老妇| 亚洲精品videosex极品| 91久久奴性调教| 蜜臀av一区二区在线免费观看 | 亚洲午夜电影在线观看| 宅男在线国产精品| 日韩精品一区二| 欧美白人最猛性xxxxx69交| 欧美人xxxx| 欧美理论片在线| 69av一区二区三区| 91精品国产色综合久久久蜜香臀| 久久99久久99| 极品美女销魂一区二区三区免费| 日韩成人dvd| 婷婷国产v国产偷v亚洲高清| 一区二区三区高清| 欧美在线免费视屏| 精品一区二区三区在线播放| 亚洲成人免费影院| 精品国精品自拍自在线| 成人av在线观| 99久久精品情趣| 韩国三级电影一区二区| 精品在线亚洲视频| 成人禁用看黄a在线| 国产精品亚洲а∨天堂免在线| 国产精品2024| 欧美久久久久久久久中文字幕| 欧美一区二区视频在线观看2022| 91麻豆免费观看| 日韩欧美电影在线| 欧美日韩和欧美的一区二区| 国产精品剧情在线亚洲| 久久国产欧美日韩精品| 不卡的看片网站| 日韩一区二区在线看| 成人亚洲一区二区一| 日韩欧美你懂的| 欧美国产国产综合| 激情成人午夜视频| 色综合久久综合网欧美综合网 | 欧美色综合网站| 国产日韩成人精品| 亚洲电影第三页| 亚洲狠狠丁香婷婷综合久久久| 午夜伦理一区二区| 91蝌蚪国产九色| 日本韩国欧美一区| 国产精品美女www爽爽爽| 午夜精品福利在线| 在线看一区二区| 中文字幕一区二区三区四区不卡 | 亚洲激情成人在线| 成人av在线播放网址| 日本一区二区视频在线观看| 国产一区二区三区四区五区美女 | 欧美精品在线视频| 免费看欧美美女黄的网站| 欧美日韩aaaaa| 日本vs亚洲vs韩国一区三区二区| 欧美精品视频www在线观看| 一个色在线综合| 日韩欧美在线观看一区二区三区| 日韩黄色免费电影| 久久奇米777| 99久久婷婷国产| 中文字幕在线观看一区二区| 成人一区二区三区中文字幕| 国产日韩高清在线| 99国产精品久| 视频一区视频二区中文字幕| 亚洲欧洲国产日本综合| 色综合天天综合在线视频| 精品视频1区2区| 国产成人在线免费观看| 欧美极品少妇xxxxⅹ高跟鞋| 日韩精品91亚洲二区在线观看 | 自拍偷拍亚洲欧美日韩| 成人手机在线视频| 天天免费综合色| 国产盗摄一区二区三区| 天堂在线一区二区| 亚洲欧美偷拍卡通变态| 欧美一区二区三区婷婷月色| 亚洲成人免费av| 亚洲欧美日韩人成在线播放| 欧美一级二级三级蜜桃| 日韩精品欧美成人高清一区二区| 久久久久久免费| 欧美手机在线视频| 波多野结衣欧美| 欧美大度的电影原声| 国产成人三级在线观看| 久久噜噜亚洲综合| 欧美老女人第四色| 日本韩国视频一区二区| 91视频一区二区三区| 日本成人超碰在线观看| 亚洲一区二区不卡免费| 国产精品久久久久久久久免费樱桃| 欧美成人精精品一区二区频| 色美美综合视频| 亚洲综合网站在线观看| 亚洲国产岛国毛片在线| 精品福利一二区| 国产欧美日产一区| 欧美日韩国产精品自在自线| 日韩精品一区二区三区老鸭窝| 51久久夜色精品国产麻豆| 国产精品原创巨作av| 国产精品亲子伦对白| 久久久精品影视| 亚洲欧洲一区二区在线播放| 91精品免费观看| 国产欧美日韩视频一区二区 | 亚洲精品在线观看网站| 777亚洲妇女| 国产欧美中文在线| 色婷婷综合五月| 91精品国产综合久久福利| 欧美亚洲另类激情小说| 成人av资源在线观看| 欧美色图天堂网| 欧美日韩久久久| 欧美日韩国产小视频在线观看| 亚洲成av人**亚洲成av**| 亚洲欧美aⅴ...| 免费看黄色91| 久久国产精品无码网站| 国产精品一区不卡| 欧美特级限制片免费在线观看| 精品日韩在线观看| 亚洲成人黄色影院| 91丝袜呻吟高潮美腿白嫩在线观看| 色婷婷综合久久久中文一区二区| 精品一区二区免费| 色成人在线视频| 久久婷婷成人综合色| 看片网站欧美日韩| 久久99精品久久久久久动态图| 成人性生交大片免费看视频在线| 欧美白人最猛性xxxxx69交|