struct jpeg_decompress_struct cinfo2;
guchar *dptr, *dptr2;
guint rowstride;
+ guchar *stereo_buf2 = NULL;
+ guint stereo_length = 0;
struct error_handler_data jerr;
-// stdio_src_ptr src;
+
+ lj->stereo = FALSE;
+
MPOData *mpo = jpeg_get_mpo_data(buf, count);
- lj->stereo = (mpo && mpo->num_images > 1);
+ if (mpo && mpo->num_images > 1)
+ {
+ lj->stereo = TRUE;
+ stereo_buf2 = (unsigned char *)buf + mpo->images[1].offset;
+ stereo_length = mpo->images[1].length;
+ }
+ jpeg_mpo_data_free(mpo);
/* setup error handler */
cinfo.err = jpeg_std_error (&jerr.pub);
if (lj->stereo)
{
jpeg_create_decompress(&cinfo2);
- jpeg_mem_src(&cinfo2, (unsigned char *)buf + mpo->images[1].offset, mpo->images[1].length);
+ jpeg_mem_src(&cinfo2, stereo_buf2, stereo_length);
jpeg_read_header(&cinfo2, TRUE);
if (cinfo.image_width != cinfo2.image_width ||
}
return NULL;
}
+
+void jpeg_mpo_data_free(MPOData *mpo)
+{
+ if (mpo)
+ {
+ if (mpo->images) g_free(mpo->images);
+ g_free(mpo);
+ }
+}
\ No newline at end of file
};
MPOData* jpeg_get_mpo_data(guchar *data, guint size);
+void jpeg_mpo_data_free(MPOData *mpo);
+
#endif
\ No newline at end of file