⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w3jpeg.c

📁 usb摄像头测试源代码
💻 C
字号:
/* * w3jpeg.c * plain io destination manager (write()) * * Copyright (C) 1998 - 2000 Rasca, Berlin * EMail: thron@gmx.de * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdio.h>#include <unistd.h>#include <jpeglib.h>#include <jerror.h>#include "w3jpeg.h"typedef struct {	struct jpeg_destination_mgr pub;	int fd;	JOCTET *buffer;} my_destination_mgr;typedef my_destination_mgr *my_dest_ptr;#define OUTPUT_BUF_SIZE 2048/* * initialize buffer */METHODDEF(void)init_destination (j_compress_ptr cinfo){	my_dest_ptr dest = (my_dest_ptr) cinfo->dest;	dest->buffer = (JOCTET *)		(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,		OUTPUT_BUF_SIZE * sizeof(JOCTET));	dest->pub.next_output_byte = dest->buffer;	dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;}/* * flush buffer to filedescriptor */METHODDEF(boolean)empty_output_buffer (j_compress_ptr cinfo){	my_dest_ptr dest = (my_dest_ptr) cinfo->dest;	if (write (dest->fd, dest->buffer, OUTPUT_BUF_SIZE) != OUTPUT_BUF_SIZE) {#ifdef DEBUG_JPEG		fprintf (stderr, "%s: empty_output_buffer()\n", __FILE__);#endif		return (FALSE);		ERREXIT(cinfo, JERR_FILE_WRITE);	}	dest->pub.next_output_byte = dest->buffer;	dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;	return (TRUE);}/* */METHODDEF(void)term_destination(j_compress_ptr cinfo){	my_dest_ptr dest = (my_dest_ptr) cinfo->dest;	size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;	if (datacount > 0) {		if (write (dest->fd, dest->buffer, datacount) != datacount) {#ifdef DEBUG_JPEG			fprintf (stderr, "%s: term_destination()\n", __FILE__);#endif			return;			ERREXIT(cinfo, JERR_FILE_WRITE);		}	}}/* */GLOBAL(void)jpeg_io_dest (j_compress_ptr cinfo, int fd){	my_dest_ptr dest;	if (cinfo->dest == NULL) {		cinfo->dest = (struct jpeg_destination_mgr *)			(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_PERMANENT,			sizeof(my_destination_mgr));	}#ifdef DEBUG_JPEG			fprintf (stderr, "%s: jpeg_io_dest()\n", __FILE__);#endif	dest = (my_dest_ptr) cinfo->dest;	dest->pub.init_destination = init_destination;	dest->pub.empty_output_buffer = empty_output_buffer;	dest->pub.term_destination = term_destination;	dest->fd = fd;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -