24 #include <core/exception.h> 25 #include <fvutils/readers/jpeg.h> 26 #include <fvutils/color/rgbyuv.h> 46 JpegReader::JpegReader(
const char *filename)
51 if ((infile = fopen(filename,
"rb")) == NULL) {
55 cinfo.err = jpeg_std_error( &jerr );
56 jpeg_create_decompress( &cinfo );
57 jpeg_stdio_src( &cinfo, infile );
59 jpeg_read_header( &cinfo,
true );
60 jpeg_calc_output_dimensions( &cinfo );
73 JpegReader::~JpegReader()
75 jpeg_destroy_decompress( &cinfo );
82 JpegReader::set_buffer(
unsigned char *yuv422planar_buffer)
84 buffer = yuv422planar_buffer;
89 JpegReader::colorspace()
96 JpegReader::pixel_width()
99 return cinfo.output_width;
107 JpegReader::pixel_height()
110 return cinfo.output_height;
120 if ( buffer == NULL ) {
121 throw Exception(
"JpegReader::read: buffer == NULL");
124 jpeg_start_decompress( &cinfo );
125 row_stride = cinfo.output_width * cinfo.output_components;
127 row_buffer = (
unsigned char *)malloc( row_stride );
129 while ( cinfo.output_scanline < cinfo.output_height ) {
130 jpeg_read_scanlines( &cinfo, &row_buffer, 1 );
131 convert_line_rgb_to_yuv422planar( row_buffer, buffer,
132 cinfo.output_width, cinfo.output_height,
133 0, cinfo.output_scanline - 1 );
137 jpeg_finish_decompress( &cinfo );
Fawkes library namespace.
Base class for exceptions in Fawkes.