static int MjpegDecompress( *** )
{
struct jpeg_decompress_struct tDInfo;
struct jpeg_error_mgr jerr;
unsigned char *buffer = NULL;
cinfo.err = jpeg_std_error(&jerr);
/* 申请并初始化一个 JPEG decompression object */
jpeg_create_decompress(&cinfo);
/* 这里有两种方式来传入待解压的源文件 */
/* 1. 提供源文件的描述符 infile */
jpeg_stdio_src(&cinfo, infile);
/* 2. 提供源文件的内存地址及长度 */
jpeg_mem_src(&cinfo,inbuf,size);
/* 读取 Jpeg 文件的文件头 */
jpeg_read_header(&cinfo, TRUE);
/* 开始解压 Jpeg 文件 */
jpeg_start_decompress(&cinfo);
/* 分配 scanline 所需的缓冲区 */
buffer = (unsigned char *) malloc(cinfo.output_width * cinfo.output_components);
if (NULL == buffer)
return -1;
while (cinfo.output_scanline < cinfo.output_height)
{
/* 将解压完成的数据存入 buffer */
jpeg_read_scanlines(&cinfo, &buffer, 1);
{
/* 对数据进行操作 */
}
}
/* 完成 Jpeg 的解码,释放 Jpeg 文件 */
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
/* 释放缓冲区 */
free(buffer);
return 0;
}