This is a function I wrote to decompress jpeg images using libjpeg:
#include <jpeglib.h>
int decode_frame(const char *buffer, int length, void *samples)
{
int n_samples;
struct jpeg_error_mgr err;
struct jpeg_decompress_struct cinfo = {0};
/* create decompressor */
jpeg_create_decompress(&cinfo);
cinfo.err = jpeg_std_error(&err);
cinfo.do_fancy_upsampling = FALSE;
/* set source buffer */
jpeg_mem_src(&cinfo, buffer, length);
/* read jpeg header */
jpeg_read_header(&cinfo, 1);
/* decompress */
jpeg_start_decompress(&cinfo);
/* read scanlines */
while (cinfo.output_scanline < cinfo.output_height) {
n_samples = jpeg_read_scanlines(&cinfo, (JSAMPARRAY) &samples, 1);
samples += n_samples * cinfo.image_width * cinfo.num_components;
}
/* clean up */
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
return 0;
}
No comments:
Post a Comment