* test/raw_decode.c (main): Test fixes to work with IJG JPEG 7+.
IJG JPEG 7+ uses a different upsampling algorithm which produces different numeric results. * libtiff/tif_jpeg.c (JPEGPreDecode): Patch from Even Rouault to work with IJG JPEG 7+.
This commit is contained in:
parent
22c4ecd4a8
commit
a5681ca6f0
@ -1,3 +1,12 @@
|
||||
2012-07-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
|
||||
* test/raw_decode.c (main): Test fixes to work with IJG JPEG 7+.
|
||||
IJG JPEG 7+ uses a different upsampling algorithm which produces
|
||||
different numeric results.
|
||||
|
||||
* libtiff/tif_jpeg.c (JPEGPreDecode): Patch from Even Rouault to
|
||||
work with IJG JPEG 7+.
|
||||
|
||||
2012-07-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
|
||||
* test/raw_decode.c: Add changes so that test can run with build
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: tif_jpeg.c,v 1.109 2012-07-03 00:57:50 fwarmerdam Exp $ */
|
||||
/* $Id: tif_jpeg.c,v 1.110 2012-07-06 17:05:16 bfriesen Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994-1997 Sam Leffler
|
||||
@ -1138,6 +1138,9 @@ JPEGPreDecode(TIFF* tif, uint16 s)
|
||||
if (downsampled_output) {
|
||||
/* Need to use raw-data interface to libjpeg */
|
||||
sp->cinfo.d.raw_data_out = TRUE;
|
||||
#if JPEG_LIB_VERSION >= 70
|
||||
sp->cinfo.d.do_fancy_upsampling = FALSE;
|
||||
#endif /* JPEG_LIB_VERSION >= 70 */
|
||||
tif->tif_decoderow = DecodeRowError;
|
||||
tif->tif_decodestrip = JPEGDecodeRaw;
|
||||
tif->tif_decodetile = JPEGDecodeRaw;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: raw_decode.c,v 1.3 2012-07-04 19:45:32 bfriesen Exp $ */
|
||||
/* $Id: raw_decode.c,v 1.4 2012-07-06 17:05:16 bfriesen Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2012, Frank Warmerdam <warmerdam@pobox.com>
|
||||
@ -42,6 +42,8 @@
|
||||
|
||||
#include "tiffio.h"
|
||||
|
||||
#include "jpeglib.h" /* Needed for JPEG_LIB_VERSION */
|
||||
|
||||
static unsigned char cluster_0[] = { 0, 0, 2, 0, 138, 139 };
|
||||
static unsigned char cluster_64[] = { 0, 0, 9, 6, 134, 119 };
|
||||
static unsigned char cluster_128[] = { 44, 40, 63, 59, 230, 95 };
|
||||
@ -111,6 +113,7 @@ main(int argc, char **argv)
|
||||
unsigned char *buffer;
|
||||
uint32 *rgba_buffer;
|
||||
tsize_t sz, szout;
|
||||
unsigned int pixel_status = 0;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
@ -188,11 +191,15 @@ main(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (check_rgb_pixel( 0, 15, 0, 18, buffer )
|
||||
|| check_rgb_pixel( 64, 0, 0, 2, buffer )
|
||||
|| check_rgb_pixel( 512, 6, 36, 182, buffer ) ) {
|
||||
exit(1);
|
||||
}
|
||||
#if JPEG_LIB_VERSION >= 70
|
||||
pixel_status |= check_rgb_pixel( 0, 18, 0, 41, buffer );
|
||||
pixel_status |= check_rgb_pixel( 64, 0, 0, 0, buffer );
|
||||
pixel_status |= check_rgb_pixel( 512, 5, 34, 196, buffer );
|
||||
#else
|
||||
pixel_status |= check_rgb_pixel( 0, 15, 0, 18, buffer );
|
||||
pixel_status |= check_rgb_pixel( 64, 0, 0, 2, buffer );
|
||||
pixel_status |= check_rgb_pixel( 512, 6, 36, 182, buffer );
|
||||
#endif
|
||||
|
||||
free( buffer );
|
||||
|
||||
@ -217,15 +224,23 @@ main(int argc, char **argv)
|
||||
* accomplish it from the YCbCr subsampled buffer ourselves in which
|
||||
* case the results may be subtly different but similar.
|
||||
*/
|
||||
if (check_rgba_pixel( 0, 15, 0, 18, 255, rgba_buffer )
|
||||
|| check_rgba_pixel( 64, 0, 0, 2, 255, rgba_buffer )
|
||||
|| check_rgba_pixel( 512, 6, 36, 182, 255, rgba_buffer ) ) {
|
||||
exit(1);
|
||||
}
|
||||
#if JPEG_LIB_VERSION >= 70
|
||||
pixel_status |= check_rgba_pixel( 0, 18, 0, 41, 255, rgba_buffer );
|
||||
pixel_status |= check_rgba_pixel( 64, 0, 0, 0, 255, rgba_buffer );
|
||||
pixel_status |= check_rgba_pixel( 512, 5, 34, 196, 255, rgba_buffer );
|
||||
#else
|
||||
pixel_status |= check_rgba_pixel( 0, 15, 0, 18, 255, rgba_buffer );
|
||||
pixel_status |= check_rgba_pixel( 64, 0, 0, 2, 255, rgba_buffer );
|
||||
pixel_status |= check_rgba_pixel( 512, 6, 36, 182, 255, rgba_buffer );
|
||||
#endif
|
||||
|
||||
free( rgba_buffer );
|
||||
TIFFClose(tif);
|
||||
|
||||
if (pixel_status) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user