亚洲欧美第一页_禁久久精品乱码_粉嫩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;	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一区二区三区免费野_久草精品视频
成人app网站| 欧美精品乱码久久久久久| 一本久久a久久免费精品不卡| 在线欧美日韩国产| 久久久久综合网| 亚洲一区二区成人在线观看| 成人午夜精品在线| 91精品国产丝袜白色高跟鞋| 自拍偷拍欧美激情| 国产精品18久久久久久久久久久久 | 成人激情图片网| 3d成人动漫网站| 一区二区三区自拍| 国产成人99久久亚洲综合精品| 日韩欧美视频在线| 亚洲成精国产精品女| 成人免费毛片片v| 国产午夜三级一区二区三| 午夜久久久久久电影| 色综合天天综合色综合av | 欧美一区二区观看视频| 一区二区三区在线免费| av电影在线不卡| 中文字幕欧美国产| 国产高清在线精品| 久久伊99综合婷婷久久伊| 免费在线观看一区二区三区| 精品视频免费看| 亚洲无人区一区| 欧美性极品少妇| 亚洲aⅴ怡春院| 欧美夫妻性生活| 日韩福利视频网| 精品日韩一区二区三区免费视频| 日本系列欧美系列| 日韩欧美一级二级三级久久久| 日韩影院免费视频| 日韩一级完整毛片| 九九久久精品视频| 中文在线一区二区| youjizz国产精品| 亚洲六月丁香色婷婷综合久久| 91一区在线观看| 亚洲一区二区在线视频| 欧美日韩亚洲国产综合| 日本成人中文字幕在线视频| 欧美一区二区三区小说| 久久电影网电视剧免费观看| 精品伦理精品一区| 国产不卡视频在线观看| 日韩一区在线看| 欧美三级三级三级爽爽爽| 日本成人在线不卡视频| 国产情人综合久久777777| 99久精品国产| 偷拍日韩校园综合在线| 欧美va亚洲va国产综合| 国产91清纯白嫩初高中在线观看 | 亚洲精品国产成人久久av盗摄| 在线观看免费一区| 久久国产综合精品| 国产精品的网站| 91精品国产综合久久久久久漫画 | 亚洲影视资源网| 欧美一二区视频| 成熟亚洲日本毛茸茸凸凹| 一区二区免费在线| 精品99999| 色婷婷久久综合| 韩国三级电影一区二区| 一区二区三区国产精华| 欧美本精品男人aⅴ天堂| 91麻豆6部合集magnet| 麻豆91小视频| 一区二区三区免费网站| 久久综合九色综合97_久久久| 91香蕉视频mp4| 国产制服丝袜一区| 亚洲成人中文在线| 久久综合久久综合亚洲| 欧美三级中文字幕在线观看| 成人sese在线| 久久精品久久久精品美女| 亚洲欧美日韩中文字幕一区二区三区| 91精品一区二区三区久久久久久| 福利一区在线观看| 麻豆久久一区二区| 亚洲成人精品在线观看| 综合激情成人伊人| 国产亚洲福利社区一区| 6080国产精品一区二区| 99re66热这里只有精品3直播| 精品一区二区免费看| 亚洲一区成人在线| 亚洲激情自拍偷拍| 亚洲国产精品二十页| 精品国产一区二区三区av性色| 欧美在线观看18| av电影天堂一区二区在线观看| 国产一区二区福利视频| 免费欧美在线视频| 爽好久久久欧美精品| 亚洲综合在线第一页| 国产精品久久久久精k8| 国产日韩欧美制服另类| 国产日韩精品久久久| 26uuu色噜噜精品一区| 精品日韩欧美在线| 日韩午夜激情免费电影| 制服.丝袜.亚洲.中文.综合| 777亚洲妇女| 欧美日韩国产高清一区二区| 欧美日韩一级大片网址| 欧美日韩一本到| 欧美日韩国产中文| 日韩一区二区免费高清| 欧美一区二区三区四区久久| 4438成人网| 日韩视频永久免费| 精品国产乱码久久久久久影片| 精品美女被调教视频大全网站| 久久综合九色综合欧美亚洲| 国产亚洲婷婷免费| 亚洲国产精品99久久久久久久久| 国产日产亚洲精品系列| 1000部国产精品成人观看| 亚洲欧美另类小说| 亚洲成在人线在线播放| 伦理电影国产精品| 国产麻豆成人精品| 成人高清在线视频| 色www精品视频在线观看| 欧美性感一区二区三区| 欧美一区二区三区免费在线看| 日韩欧美中文字幕制服| 久久青草国产手机看片福利盒子 | 亚洲美腿欧美偷拍| 一区二区三区欧美视频| 人人狠狠综合久久亚洲| 国产老妇另类xxxxx| 不卡av在线免费观看| 在线国产电影不卡| 欧美一区二区三区播放老司机| 亚洲精品在线电影| 国产精品第一页第二页第三页| 亚洲第一成人在线| 国产精品综合二区| 91国产视频在线观看| 91精品国产综合久久精品图片 | 91在线观看污| 制服.丝袜.亚洲.中文.综合| 国产清纯美女被跳蛋高潮一区二区久久w | 国产一区二区三区免费看 | 欧美日韩三级一区| 国产肉丝袜一区二区| 一区二区在线看| 国产美女娇喘av呻吟久久| 色就色 综合激情| 久久亚洲二区三区| 亚洲成人中文在线| 国产成人午夜电影网| 欧美四级电影在线观看| 国产喂奶挤奶一区二区三区| 亚洲chinese男男1069| 国产成人在线视频免费播放| 精品视频在线看| 中文字幕高清一区| 久久国产人妖系列| 欧美亚洲图片小说| 国产精品不卡一区| 美女看a上一区| 在线观看日产精品| 亚洲国产精品99久久久久久久久| 日韩电影在线免费观看| 95精品视频在线| 国产校园另类小说区| 青青草原综合久久大伊人精品| 色婷婷av一区二区三区之一色屋| 国产日产欧美精品一区二区三区| 男女男精品视频网| 欧美欧美欧美欧美| 亚洲猫色日本管| 波多野结衣精品在线| 国产午夜久久久久| 国产乱子伦一区二区三区国色天香| 欧美色图在线观看| 亚洲观看高清完整版在线观看| 99久久精品国产一区| 中文字幕巨乱亚洲| 成人黄色片在线观看| 久久这里只有精品视频网| 日韩中文字幕麻豆| 欧美精品一二三区| 天天做天天摸天天爽国产一区 | 日韩精品一级中文字幕精品视频免费观看 | 色综合中文综合网| 91美女在线视频| 亚洲色图色小说| 欧美一级夜夜爽| 婷婷综合五月天|