Support additional scaling factors when decompressing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@753 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
1.3 pre-beta
|
||||||
|
============
|
||||||
|
|
||||||
|
[1] Added support for additional scaling factors (3/8, 5/8, 3/4, 7/8, 9/8, 5/4,
|
||||||
|
11/8, 3/2, 13/8, 7/4, 15/8, and 2) when decompressing. Currently, the IDCT
|
||||||
|
will not be SIMD-accelerated when using any of these scaling factors.
|
||||||
|
|
||||||
|
|
||||||
1.2.0
|
1.2.0
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|||||||
28
Makefile.am
28
Makefile.am
@@ -174,18 +174,38 @@ if WITH_SSE_FLOAT_DCT
|
|||||||
else
|
else
|
||||||
cmp $(srcdir)/testorig.ppm testoutflt.ppm
|
cmp $(srcdir)/testorig.ppm testoutflt.ppm
|
||||||
endif
|
endif
|
||||||
|
./djpeg -dct int -nosmooth -scale 2/1 -ppm -outfile testoutint2_1.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint2_1.ppm testoutint2_1.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 15/8 -ppm -outfile testoutint15_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint15_8.ppm testoutint15_8.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 7/4 -ppm -outfile testoutint7_4.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint7_4.ppm testoutint7_4.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 13/8 -ppm -outfile testoutint13_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint13_8.ppm testoutint13_8.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 3/2 -ppm -outfile testoutint3_2.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint3_2.ppm testoutint3_2.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 11/8 -ppm -outfile testoutint11_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint11_8.ppm testoutint11_8.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 5/4 -ppm -outfile testoutint5_4.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint5_4.ppm testoutint5_4.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 9/8 -ppm -outfile testoutint9_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint9_8.ppm testoutint9_8.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 7/8 -ppm -outfile testoutint7_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint7_8.ppm testoutint7_8.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 3/4 -ppm -outfile testoutint3_4.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint3_4.ppm testoutint3_4.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 5/8 -ppm -outfile testoutint5_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint5_8.ppm testoutint5_8.ppm
|
||||||
./djpeg -dct int -scale 1/2 -ppm -outfile testoutint1_2.ppm $(srcdir)/testorig.jpg
|
./djpeg -dct int -scale 1/2 -ppm -outfile testoutint1_2.ppm $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimgint1_2.ppm testoutint1_2.ppm
|
cmp $(srcdir)/testimgint1_2.ppm testoutint1_2.ppm
|
||||||
./djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm $(srcdir)/testorig.jpg
|
./djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimgfst1_2.ppm testoutfst1_2.ppm
|
cmp $(srcdir)/testimgfst1_2.ppm testoutfst1_2.ppm
|
||||||
|
./djpeg -dct int -nosmooth -scale 3/8 -ppm -outfile testoutint3_8.ppm $(srcdir)/testorig.jpg
|
||||||
|
cmp $(srcdir)/testimgint3_8.ppm testoutint3_8.ppm
|
||||||
./djpeg -dct int -scale 1/4 -ppm -outfile testoutint1_4.ppm $(srcdir)/testorig.jpg
|
./djpeg -dct int -scale 1/4 -ppm -outfile testoutint1_4.ppm $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimgint1_4.ppm testoutint1_4.ppm
|
cmp $(srcdir)/testimgint1_4.ppm testoutint1_4.ppm
|
||||||
./djpeg -dct fast -scale 1/4 -ppm -outfile testoutfst1_4.ppm $(srcdir)/testorig.jpg
|
|
||||||
cmp $(srcdir)/testimgfst1_4.ppm testoutfst1_4.ppm
|
|
||||||
./djpeg -dct int -scale 1/8 -ppm -outfile testoutint1_8.ppm $(srcdir)/testorig.jpg
|
./djpeg -dct int -scale 1/8 -ppm -outfile testoutint1_8.ppm $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimgint1_8.ppm testoutint1_8.ppm
|
cmp $(srcdir)/testimgint1_8.ppm testoutint1_8.ppm
|
||||||
./djpeg -dct fast -scale 1/8 -ppm -outfile testoutfst1_8.ppm $(srcdir)/testorig.jpg
|
|
||||||
cmp $(srcdir)/testimgfst1_8.ppm testoutfst1_8.ppm
|
|
||||||
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimg.bmp testout.bmp
|
cmp $(srcdir)/testimg.bmp testout.bmp
|
||||||
if WITH_ARITH_ENC
|
if WITH_ARITH_ENC
|
||||||
|
|||||||
7
djpeg.1
7
djpeg.1
@@ -1,4 +1,4 @@
|
|||||||
.TH DJPEG 1 "11 October 2010"
|
.TH DJPEG 1 "27 January 2012"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
djpeg \- decompress a JPEG file to an image file
|
djpeg \- decompress a JPEG file to an image file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -62,8 +62,9 @@ runs noticeably faster in this mode.
|
|||||||
.TP
|
.TP
|
||||||
.BI \-scale " M/N"
|
.BI \-scale " M/N"
|
||||||
Scale the output image by a factor M/N. Currently the scale factor must be
|
Scale the output image by a factor M/N. Currently the scale factor must be
|
||||||
1/1, 1/2, 1/4, or 1/8. Scaling is handy if the image is larger than your
|
M/8, where M is an integer between 1 and 16 inclusive, or any reduced fraction
|
||||||
screen; also,
|
thereof (such as 1/2, 3/4, etc.) Scaling is handy if the image is larger than
|
||||||
|
your screen; also,
|
||||||
.B djpeg
|
.B djpeg
|
||||||
runs much faster when scaling down the output.
|
runs much faster when scaling down the output.
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
48
jdct.h
48
jdct.h
@@ -95,9 +95,21 @@ typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
|
|||||||
#define jpeg_idct_islow jRDislow
|
#define jpeg_idct_islow jRDislow
|
||||||
#define jpeg_idct_ifast jRDifast
|
#define jpeg_idct_ifast jRDifast
|
||||||
#define jpeg_idct_float jRDfloat
|
#define jpeg_idct_float jRDfloat
|
||||||
|
#define jpeg_idct_7x7 jRD7x7
|
||||||
|
#define jpeg_idct_6x6 jRD6x6
|
||||||
|
#define jpeg_idct_5x5 jRD5x5
|
||||||
#define jpeg_idct_4x4 jRD4x4
|
#define jpeg_idct_4x4 jRD4x4
|
||||||
|
#define jpeg_idct_3x3 jRD3x3
|
||||||
#define jpeg_idct_2x2 jRD2x2
|
#define jpeg_idct_2x2 jRD2x2
|
||||||
#define jpeg_idct_1x1 jRD1x1
|
#define jpeg_idct_1x1 jRD1x1
|
||||||
|
#define jpeg_idct_9x9 jRD9x9
|
||||||
|
#define jpeg_idct_10x10 jRD10x10
|
||||||
|
#define jpeg_idct_11x11 jRD11x11
|
||||||
|
#define jpeg_idct_12x12 jRD12x12
|
||||||
|
#define jpeg_idct_13x13 jRD13x13
|
||||||
|
#define jpeg_idct_14x14 jRD14x14
|
||||||
|
#define jpeg_idct_15x15 jRD15x15
|
||||||
|
#define jpeg_idct_16x16 jRD16x16
|
||||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
|
#endif /* NEED_SHORT_EXTERNAL_NAMES */
|
||||||
|
|
||||||
/* Extern declarations for the forward and inverse DCT routines. */
|
/* Extern declarations for the forward and inverse DCT routines. */
|
||||||
@@ -115,15 +127,51 @@ EXTERN(void) jpeg_idct_ifast
|
|||||||
EXTERN(void) jpeg_idct_float
|
EXTERN(void) jpeg_idct_float
|
||||||
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_7x7
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_6x6
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_5x5
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
EXTERN(void) jpeg_idct_4x4
|
EXTERN(void) jpeg_idct_4x4
|
||||||
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_3x3
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
EXTERN(void) jpeg_idct_2x2
|
EXTERN(void) jpeg_idct_2x2
|
||||||
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
EXTERN(void) jpeg_idct_1x1
|
EXTERN(void) jpeg_idct_1x1
|
||||||
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_9x9
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_10x10
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_11x11
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_12x12
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_13x13
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_14x14
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_15x15
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
EXTERN(void) jpeg_idct_16x16
|
||||||
|
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
||||||
|
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
49
jddctmgr.c
49
jddctmgr.c
@@ -2,6 +2,7 @@
|
|||||||
* jddctmgr.c
|
* jddctmgr.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
|
* Modified 2002-2010 by Guido Vollbeding.
|
||||||
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
* Copyright (C) 2010, D. R. Commander.
|
* Copyright (C) 2010, D. R. Commander.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
@@ -115,6 +116,10 @@ start_pass (j_decompress_ptr cinfo)
|
|||||||
method_ptr = jpeg_idct_2x2;
|
method_ptr = jpeg_idct_2x2;
|
||||||
method = JDCT_ISLOW; /* jidctred uses islow-style table */
|
method = JDCT_ISLOW; /* jidctred uses islow-style table */
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
method_ptr = jpeg_idct_3x3;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (jsimd_can_idct_4x4())
|
if (jsimd_can_idct_4x4())
|
||||||
method_ptr = jsimd_idct_4x4;
|
method_ptr = jsimd_idct_4x4;
|
||||||
@@ -122,6 +127,18 @@ start_pass (j_decompress_ptr cinfo)
|
|||||||
method_ptr = jpeg_idct_4x4;
|
method_ptr = jpeg_idct_4x4;
|
||||||
method = JDCT_ISLOW; /* jidctred uses islow-style table */
|
method = JDCT_ISLOW; /* jidctred uses islow-style table */
|
||||||
break;
|
break;
|
||||||
|
case 5:
|
||||||
|
method_ptr = jpeg_idct_5x5;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
method_ptr = jpeg_idct_6x6;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
method_ptr = jpeg_idct_7x7;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
case DCTSIZE:
|
case DCTSIZE:
|
||||||
switch (cinfo->dct_method) {
|
switch (cinfo->dct_method) {
|
||||||
@@ -157,6 +174,38 @@ start_pass (j_decompress_ptr cinfo)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 9:
|
||||||
|
method_ptr = jpeg_idct_9x9;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
method_ptr = jpeg_idct_10x10;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
method_ptr = jpeg_idct_11x11;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
method_ptr = jpeg_idct_12x12;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
method_ptr = jpeg_idct_13x13;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
method_ptr = jpeg_idct_14x14;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
method_ptr = jpeg_idct_15x15;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
method_ptr = jpeg_idct_16x16;
|
||||||
|
method = JDCT_ISLOW; /* jidctint uses islow-style table */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ERREXIT1(cinfo, JERR_BAD_DCTSIZE, compptr->_DCT_scaled_size);
|
ERREXIT1(cinfo, JERR_BAD_DCTSIZE, compptr->_DCT_scaled_size);
|
||||||
break;
|
break;
|
||||||
|
|||||||
74
jdinput.c
74
jdinput.c
@@ -2,7 +2,6 @@
|
|||||||
* jdinput.c
|
* jdinput.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* Modified 2002-2009 by Guido Vollbeding.
|
|
||||||
* Copyright (C) 2010, D. R. Commander.
|
* Copyright (C) 2010, D. R. Commander.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
@@ -38,79 +37,6 @@ METHODDEF(int) consume_markers JPP((j_decompress_ptr cinfo));
|
|||||||
* Routines to calculate various quantities related to the size of the image.
|
* Routines to calculate various quantities related to the size of the image.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#if JPEG_LIB_VERSION >= 80
|
|
||||||
/*
|
|
||||||
* Compute output image dimensions and related values.
|
|
||||||
* NOTE: this is exported for possible use by application.
|
|
||||||
* Hence it mustn't do anything that can't be done twice.
|
|
||||||
*/
|
|
||||||
|
|
||||||
GLOBAL(void)
|
|
||||||
jpeg_core_output_dimensions (j_decompress_ptr cinfo)
|
|
||||||
/* Do computations that are needed before master selection phase.
|
|
||||||
* This function is used for transcoding and full decompression.
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
#ifdef IDCT_SCALING_SUPPORTED
|
|
||||||
int ci;
|
|
||||||
jpeg_component_info *compptr;
|
|
||||||
|
|
||||||
/* Compute actual output image dimensions and DCT scaling choices. */
|
|
||||||
if (cinfo->scale_num * cinfo->block_size <= cinfo->scale_denom) {
|
|
||||||
/* Provide 1/block_size scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width, (long) cinfo->block_size);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height, (long) cinfo->block_size);
|
|
||||||
cinfo->min_DCT_h_scaled_size = 1;
|
|
||||||
cinfo->min_DCT_v_scaled_size = 1;
|
|
||||||
} else if (cinfo->scale_num * cinfo->block_size <= cinfo->scale_denom * 2) {
|
|
||||||
/* Provide 2/block_size scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width * 2L, (long) cinfo->block_size);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height * 2L, (long) cinfo->block_size);
|
|
||||||
cinfo->min_DCT_h_scaled_size = 2;
|
|
||||||
cinfo->min_DCT_v_scaled_size = 2;
|
|
||||||
} else if (cinfo->scale_num * cinfo->block_size <= cinfo->scale_denom * 4) {
|
|
||||||
/* Provide 4/block_size scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width * 4L, (long) cinfo->block_size);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height * 4L, (long) cinfo->block_size);
|
|
||||||
cinfo->min_DCT_h_scaled_size = 4;
|
|
||||||
cinfo->min_DCT_v_scaled_size = 4;
|
|
||||||
} else if (cinfo->scale_num * cinfo->block_size <= cinfo->scale_denom * 8) {
|
|
||||||
/* Provide 8/block_size scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width * 8L, (long) cinfo->block_size);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height * 8L, (long) cinfo->block_size);
|
|
||||||
cinfo->min_DCT_h_scaled_size = 8;
|
|
||||||
cinfo->min_DCT_v_scaled_size = 8;
|
|
||||||
}
|
|
||||||
/* Recompute dimensions of components */
|
|
||||||
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
|
|
||||||
ci++, compptr++) {
|
|
||||||
compptr->DCT_h_scaled_size = cinfo->min_DCT_h_scaled_size;
|
|
||||||
compptr->DCT_v_scaled_size = cinfo->min_DCT_v_scaled_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* !IDCT_SCALING_SUPPORTED */
|
|
||||||
|
|
||||||
/* Hardwire it to "no scaling" */
|
|
||||||
cinfo->output_width = cinfo->image_width;
|
|
||||||
cinfo->output_height = cinfo->image_height;
|
|
||||||
/* jdinput.c has already initialized DCT_scaled_size,
|
|
||||||
* and has computed unscaled downsampled_width and downsampled_height.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif /* IDCT_SCALING_SUPPORTED */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
LOCAL(void)
|
LOCAL(void)
|
||||||
initial_setup (j_decompress_ptr cinfo)
|
initial_setup (j_decompress_ptr cinfo)
|
||||||
/* Called once, when first SOS marker is reached */
|
/* Called once, when first SOS marker is reached */
|
||||||
|
|||||||
219
jdmaster.c
219
jdmaster.c
@@ -2,6 +2,7 @@
|
|||||||
* jdmaster.c
|
* jdmaster.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
|
* Modified 2002-2009 by Guido Vollbeding.
|
||||||
* Copyright (C) 2009-2011, D. R. Commander.
|
* Copyright (C) 2009-2011, D. R. Commander.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
@@ -85,6 +86,177 @@ use_merged_upsample (j_decompress_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compute output image dimensions and related values.
|
||||||
|
* NOTE: this is exported for possible use by application.
|
||||||
|
* Hence it mustn't do anything that can't be done twice.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if JPEG_LIB_VERSION >= 80
|
||||||
|
GLOBAL(void)
|
||||||
|
#else
|
||||||
|
LOCAL(void)
|
||||||
|
#endif
|
||||||
|
jpeg_core_output_dimensions (j_decompress_ptr cinfo)
|
||||||
|
/* Do computations that are needed before master selection phase.
|
||||||
|
* This function is used for transcoding and full decompression.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
#ifdef IDCT_SCALING_SUPPORTED
|
||||||
|
int ci;
|
||||||
|
jpeg_component_info *compptr;
|
||||||
|
|
||||||
|
/* Compute actual output image dimensions and DCT scaling choices. */
|
||||||
|
if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom) {
|
||||||
|
/* Provide 1/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 1;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 1;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 2) {
|
||||||
|
/* Provide 2/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 2L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 2L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 2;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 2;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 3) {
|
||||||
|
/* Provide 3/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 3L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 3L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 3;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 3;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 4) {
|
||||||
|
/* Provide 4/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 4L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 4L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 4;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 4;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 5) {
|
||||||
|
/* Provide 5/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 5L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 5L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 5;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 5;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 6) {
|
||||||
|
/* Provide 6/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 6L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 6L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 6;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 6;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 7) {
|
||||||
|
/* Provide 7/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 7L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 7L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 7;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 7;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 8) {
|
||||||
|
/* Provide 8/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 8L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 8L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 8;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 8;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 9) {
|
||||||
|
/* Provide 9/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 9L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 9L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 9;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 9;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 10) {
|
||||||
|
/* Provide 10/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 10L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 10L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 10;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 10;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 11) {
|
||||||
|
/* Provide 11/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 11L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 11L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 11;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 11;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 12) {
|
||||||
|
/* Provide 12/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 12L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 12L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 12;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 12;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 13) {
|
||||||
|
/* Provide 13/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 13L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 13L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 13;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 13;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 14) {
|
||||||
|
/* Provide 14/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 14L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 14L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 14;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 14;
|
||||||
|
} else if (cinfo->scale_num * DCTSIZE <= cinfo->scale_denom * 15) {
|
||||||
|
/* Provide 15/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 15L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 15L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 15;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 15;
|
||||||
|
} else {
|
||||||
|
/* Provide 16/block_size scaling */
|
||||||
|
cinfo->output_width = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_width * 16L, (long) DCTSIZE);
|
||||||
|
cinfo->output_height = (JDIMENSION)
|
||||||
|
jdiv_round_up((long) cinfo->image_height * 16L, (long) DCTSIZE);
|
||||||
|
cinfo->_min_DCT_h_scaled_size = 16;
|
||||||
|
cinfo->_min_DCT_v_scaled_size = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Recompute dimensions of components */
|
||||||
|
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
|
||||||
|
ci++, compptr++) {
|
||||||
|
compptr->_DCT_h_scaled_size = cinfo->_min_DCT_h_scaled_size;
|
||||||
|
compptr->_DCT_v_scaled_size = cinfo->_min_DCT_v_scaled_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* !IDCT_SCALING_SUPPORTED */
|
||||||
|
|
||||||
|
/* Hardwire it to "no scaling" */
|
||||||
|
cinfo->output_width = cinfo->image_width;
|
||||||
|
cinfo->output_height = cinfo->image_height;
|
||||||
|
/* jdinput.c has already initialized DCT_scaled_size,
|
||||||
|
* and has computed unscaled downsampled_width and downsampled_height.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* IDCT_SCALING_SUPPORTED */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compute output image dimensions and related values.
|
* Compute output image dimensions and related values.
|
||||||
* NOTE: this is exported for possible use by application.
|
* NOTE: this is exported for possible use by application.
|
||||||
@@ -105,52 +277,11 @@ jpeg_calc_output_dimensions (j_decompress_ptr cinfo)
|
|||||||
if (cinfo->global_state != DSTATE_READY)
|
if (cinfo->global_state != DSTATE_READY)
|
||||||
ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
|
ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
|
||||||
|
|
||||||
|
/* Compute core output image dimensions and DCT scaling choices. */
|
||||||
|
jpeg_core_output_dimensions(cinfo);
|
||||||
|
|
||||||
#ifdef IDCT_SCALING_SUPPORTED
|
#ifdef IDCT_SCALING_SUPPORTED
|
||||||
|
|
||||||
/* Compute actual output image dimensions and DCT scaling choices. */
|
|
||||||
if (cinfo->scale_num * 8 <= cinfo->scale_denom) {
|
|
||||||
/* Provide 1/8 scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width, 8L);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height, 8L);
|
|
||||||
#if JPEG_LIB_VERSION >= 70
|
|
||||||
cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 1;
|
|
||||||
#else
|
|
||||||
cinfo->min_DCT_scaled_size = 1;
|
|
||||||
#endif
|
|
||||||
} else if (cinfo->scale_num * 4 <= cinfo->scale_denom) {
|
|
||||||
/* Provide 1/4 scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width, 4L);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height, 4L);
|
|
||||||
#if JPEG_LIB_VERSION >= 70
|
|
||||||
cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 2;
|
|
||||||
#else
|
|
||||||
cinfo->min_DCT_scaled_size = 2;
|
|
||||||
#endif
|
|
||||||
} else if (cinfo->scale_num * 2 <= cinfo->scale_denom) {
|
|
||||||
/* Provide 1/2 scaling */
|
|
||||||
cinfo->output_width = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_width, 2L);
|
|
||||||
cinfo->output_height = (JDIMENSION)
|
|
||||||
jdiv_round_up((long) cinfo->image_height, 2L);
|
|
||||||
#if JPEG_LIB_VERSION >= 70
|
|
||||||
cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = 4;
|
|
||||||
#else
|
|
||||||
cinfo->min_DCT_scaled_size = 4;
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
/* Provide 1/1 scaling */
|
|
||||||
cinfo->output_width = cinfo->image_width;
|
|
||||||
cinfo->output_height = cinfo->image_height;
|
|
||||||
#if JPEG_LIB_VERSION >= 70
|
|
||||||
cinfo->min_DCT_h_scaled_size = cinfo->min_DCT_v_scaled_size = DCTSIZE;
|
|
||||||
#else
|
|
||||||
cinfo->min_DCT_scaled_size = DCTSIZE;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
/* In selecting the actual DCT scaling for each component, we try to
|
/* In selecting the actual DCT scaling for each component, we try to
|
||||||
* scale up the chroma components via IDCT scaling rather than upsampling.
|
* scale up the chroma components via IDCT scaling rather than upsampling.
|
||||||
* This saves time if the upsampler gets to use 1:1 scaling.
|
* This saves time if the upsampler gets to use 1:1 scaling.
|
||||||
|
|||||||
2236
jidctint.c
2236
jidctint.c
File diff suppressed because it is too large
Load Diff
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
#if JPEG_LIB_VERSION >= 70
|
#if JPEG_LIB_VERSION >= 70
|
||||||
#define _DCT_scaled_size DCT_h_scaled_size
|
#define _DCT_scaled_size DCT_h_scaled_size
|
||||||
|
#define _DCT_h_scaled_size DCT_h_scaled_size
|
||||||
|
#define _DCT_v_scaled_size DCT_v_scaled_size
|
||||||
#define _min_DCT_scaled_size min_DCT_h_scaled_size
|
#define _min_DCT_scaled_size min_DCT_h_scaled_size
|
||||||
#define _min_DCT_h_scaled_size min_DCT_h_scaled_size
|
#define _min_DCT_h_scaled_size min_DCT_h_scaled_size
|
||||||
#define _min_DCT_v_scaled_size min_DCT_v_scaled_size
|
#define _min_DCT_v_scaled_size min_DCT_v_scaled_size
|
||||||
@@ -18,6 +20,8 @@
|
|||||||
#define _jpeg_height jpeg_height
|
#define _jpeg_height jpeg_height
|
||||||
#else
|
#else
|
||||||
#define _DCT_scaled_size DCT_scaled_size
|
#define _DCT_scaled_size DCT_scaled_size
|
||||||
|
#define _DCT_h_scaled_size DCT_scaled_size
|
||||||
|
#define _DCT_v_scaled_size DCT_scaled_size
|
||||||
#define _min_DCT_scaled_size min_DCT_scaled_size
|
#define _min_DCT_scaled_size min_DCT_scaled_size
|
||||||
#define _min_DCT_h_scaled_size min_DCT_scaled_size
|
#define _min_DCT_h_scaled_size min_DCT_scaled_size
|
||||||
#define _min_DCT_v_scaled_size min_DCT_scaled_size
|
#define _min_DCT_v_scaled_size min_DCT_scaled_size
|
||||||
|
|||||||
@@ -1113,7 +1113,8 @@ J_COLOR_SPACE out_color_space
|
|||||||
unsigned int scale_num, scale_denom
|
unsigned int scale_num, scale_denom
|
||||||
Scale the image by the fraction scale_num/scale_denom. Default is
|
Scale the image by the fraction scale_num/scale_denom. Default is
|
||||||
1/1, or no scaling. Currently, the only supported scaling ratios
|
1/1, or no scaling. Currently, the only supported scaling ratios
|
||||||
are 1/1, 1/2, 1/4, and 1/8. (The library design allows for arbitrary
|
are M/8 with all M from 1 to 16, or any reduced fraction thereof (such
|
||||||
|
as 1/2, 3/4, etc.) (The library design allows for arbitrary
|
||||||
scaling ratios but this is not likely to be implemented any time soon.)
|
scaling ratios but this is not likely to be implemented any time soon.)
|
||||||
Smaller scaling ratios permit significantly faster decoding since
|
Smaller scaling ratios permit significantly faster decoding since
|
||||||
fewer pixels need be processed and a simpler IDCT method can be used.
|
fewer pixels need be processed and a simpler IDCT method can be used.
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,4 +0,0 @@
|
|||||||
P6
|
|
||||||
29 19
|
|
||||||
255
|
|
||||||
0/-50,4/,4/,2-*3.+30+74/B:/J>0dC2<43>A2<41>BB<42>=;<3B>?,<2C>@+<2B>>-<2D>=-<2D>B5<42>F;:5232./1.5//uKLkj<6B>SNdci_\VX-.0.-+,*+,*+,*+.,-0,+2.-<20A4.H94w9.<2E>A5<41>C7<43>>,<2C>=,<2C>;,<2C>A8<41>TK<54><4B>sGK<0/+/.,0/-PMF<4D><46><EFBFBD>~<7E><>w<EFBFBD>wWV:45/:728302012,.10,32.?5,B8/>3/F21K4,<2C>;4<>?6<>>0<><-<2D>C8<43>M@<40>xc<78><63><EFBFBD>m<EFBFBD>fFJ<1,)1+-NO?y<>h<68>vk<76>g@>29:4C@;GB<I?5D<1<71=9.L?/J<1@<1<>>A<>?1<>?4<>@3<>::<3A>:8<>G?<3F>bM<62>?H<>>Q<>Kc<4B>Ll<4C>JanE?<3F><>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>uX[F43/==3OI9kl<6B>lg<6C>IDJ>;6H@3C?<a?6<>=+<2B>;,<2C>;/<2F>;0<>4+<2B>3'<27>8+<2B>FB<46>=0<>DB<44>ES<45>Hp<48>Rt<52>]k<><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><C6B0>EA5=82OF7wy<77><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ih<69><68>KQ<4B>Wh<57>A=<3D>=.<2E>8/<2F>82<38>:.<2E>50<35>3.<2E>7-<2D>EA<45>;.<2E>C6<43>KH<4B>Ym<59>_t<5F>hp<68><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>YM?SG9SJ9lj<6C><6A><EFBFBD><EFBFBD>Ͻf<CFBD><66>@D<>B?<3F>=;<3B>=0<>7.<2E>3/<2F>51<35>6,<2C>6-<2D>9+<2B><6<>A:<3A>=.<2E>=/<2F>fd<66>ks<6B>ns<6E><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[K;[K;^M=^PEqg<71><67>p<EFBFBD><70>?@<40>@A<>=0<>?:<3A>=,<2C>5,<2C>,2<>'@<40>@K<>34<33>?:<3A>:2<>;-<2D>=8<>6.<2E>`]<5D>p|<7C>RYx<59>^z<>k<EFBFBD><6B>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^M;^M;]P@kalxy<78><79><EFBFBD><EFBFBD><EFBFBD>JN<4A><7<>C8<43>9-<2D>>2<>6:<3A>7:<3A>9?<3F>@D<>KH<4B>EC<45>?8<>6:<3A>5/<2F>00<30>XQ<58>\t<>IKr<4B>[x<>`z<>`<60><>oYi^[N>aTDlh<6C>qv<71><76><EFBFBD><EFBFBD><EFBFBD>ǭ<EFBFBD>uk<75>WV<57>B:<3A>B5<42>=8<>6-<2D>CA<43>V^<5E>8><3E>GM<47>74<37>:4<>66<36>4*<2A>21<32>ML<4D>FhcG;bzJj<4A>Ok<4F>N\yCPj;A>5^Z[cc<63><63><EFBFBD>ԏ<EFBFBD>ы<EFBFBD><D18B>n\R<>a^<5E>`Y<>:(<28>9*<2A>;,<2C>:0<>@7<>04<30>)<<3C>09<30>96<39>53<35>9&<26>9)<29>GX<47>;NEG1w<31>\i<>Hi<48>Jf<4A>Hh<48>J780JKCom<6F><6D><EFBFBD>ʀ|<7C>sgkm^K<>LA<4C>8/<2F>8)<29>:+<2B>?3<>:,<2C>93<39><?<3F>C@<40>96<39>8;<3B>95<39>;*<2A>@3<>K[PI6y<36>YcxQg<51>Fi<46>Jl<4A>Nv<4E>Z`WHbYJh_PkaWXUFXUB<55>WL<57>=1<>8*<2A>9)<29>;(<28><0<>::<3A>65<36><*<2A>;3<>96<39><8<>;3<>9(<28>H=<3D>\QdsHBI7=D2m<32>Lo<4C>Op<4F>SW<53>Hi`QjaRkaWkbSg^MHI9kJ9<4A>ON<4F>@6<>@9<>A;<3B>B><3E>@6<>?0<><.<2E>:,<2C><0<>:,<2C>9+v8+<2B>NA<4E>XPTb>CK4;B0n<30>Mq<4D>Td<54>KTyFjaRjaRkbSlcTumb<6D><62><EFBFBD>jZJnC<<3C>GC<47>FC<46>DD<44>D><3E>?5<><0<>:,~:/y9/u9.p6+l6*<2A>SL`XE?M4:A/6<0g<30>Jd<4A>Ma<4D>JIj=gdSgdSlcTneV<65><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ[ZH<5A><48><EFBFBD>カ<EFBFBD>WO<57>B><3E>?9<><0}9.z:1m9.h8,i70g80RD;4:.28.2?.39-ZtMSp@[xH1B2heVheVkeYy{p<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<7F>D:<3A>?9u<5o:2l71f:1eE6gbN28.06,.3--2,/90;G3EZ;NbG%*-heVifWlfZtq<7F><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB>t{UHeD5]F6TN8JN3VXB8>47=36;5271-2.1628G2=K:+2+akSliZjfZw<5A>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xTO2LN6OV5r~VRP9KH79A4:B7<D9=E8=L5AZ:CW<*1)
|
|
||||||
4
testimgint11_8.ppm
Normal file
4
testimgint11_8.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint13_8.ppm
Normal file
4
testimgint13_8.ppm
Normal file
File diff suppressed because one or more lines are too long
5
testimgint15_8.ppm
Normal file
5
testimgint15_8.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint2_1.ppm
Normal file
4
testimgint2_1.ppm
Normal file
File diff suppressed because one or more lines are too long
5
testimgint3_2.ppm
Normal file
5
testimgint3_2.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint3_4.ppm
Normal file
4
testimgint3_4.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint3_8.ppm
Normal file
4
testimgint3_8.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint5_4.ppm
Normal file
4
testimgint5_4.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint5_8.ppm
Normal file
4
testimgint5_8.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint7_4.ppm
Normal file
4
testimgint7_4.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint7_8.ppm
Normal file
4
testimgint7_8.ppm
Normal file
File diff suppressed because one or more lines are too long
4
testimgint9_8.ppm
Normal file
4
testimgint9_8.ppm
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user