94 int numcols = (
int) (output_cols - input_cols);
97 for (row = 0; row <
num_rows; row++) {
98 ptr = image_data[row] + input_cols;
123 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
125 in_ptr = input_buf[ci] + in_row_index;
126 out_ptr = output_buf[ci] + (out_row_group_index * compptr->v_samp_factor);
127 (*downsample->methods[ci]) (cinfo, compptr, in_ptr, out_ptr);
143 int inrow, outrow, h_expand, v_expand, numpix, numpix2,
h,
v;
149 h_expand = cinfo->max_h_samp_factor /
compptr->h_samp_factor;
150 v_expand = cinfo->max_v_samp_factor /
compptr->v_samp_factor;
151 numpix = h_expand * v_expand;
159 cinfo->image_width, output_cols * h_expand);
162 for (outrow = 0; outrow <
compptr->v_samp_factor; outrow++) {
163 outptr = output_data[outrow];
164 for (outcol = 0, outcol_h = 0; outcol < output_cols;
165 outcol++, outcol_h += h_expand) {
167 for (
v = 0;
v < v_expand;
v++) {
168 inptr = input_data[inrow+
v] + outcol_h;
169 for (
h = 0;
h < h_expand;
h++) {
173 *outptr++ = (
JSAMPLE) ((outvalue + numpix2) / numpix);
192 cinfo->max_v_samp_factor, cinfo->image_width);
226 cinfo->image_width, output_cols * 2);
228 for (outrow = 0; outrow <
compptr->v_samp_factor; outrow++) {
229 outptr = output_data[outrow];
230 inptr = input_data[outrow];
232 for (outcol = 0; outcol < output_cols; outcol++) {
263 cinfo->image_width, output_cols * 2);
266 for (outrow = 0; outrow <
compptr->v_samp_factor; outrow++) {
267 outptr = output_data[outrow];
268 inptr0 = input_data[inrow];
269 inptr1 = input_data[inrow+1];
271 for (outcol = 0; outcol < output_cols; outcol++) {
276 inptr0 += 2; inptr1 += 2;
283#ifdef INPUT_SMOOTHING_SUPPORTED
298 JSAMPROW inptr0, inptr1, above_ptr, below_ptr, outptr;
299 INT32 membersum, neighsum, memberscale, neighscale;
306 cinfo->image_width, output_cols * 2);
321 memberscale = 16384 - cinfo->smoothing_factor * 80;
322 neighscale = cinfo->smoothing_factor * 16;
325 for (outrow = 0; outrow <
compptr->v_samp_factor; outrow++) {
326 outptr = output_data[outrow];
327 inptr0 = input_data[inrow];
328 inptr1 = input_data[inrow+1];
329 above_ptr = input_data[inrow-1];
330 below_ptr = input_data[inrow+2];
339 neighsum += neighsum;
342 membersum = membersum * memberscale + neighsum * neighscale;
343 *outptr++ = (
JSAMPLE) ((membersum + 32768) >> 16);
344 inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
346 for (colctr = output_cols - 2; colctr > 0; colctr--) {
356 neighsum += neighsum;
361 membersum = membersum * memberscale + neighsum * neighscale;
363 *outptr++ = (
JSAMPLE) ((membersum + 32768) >> 16);
364 inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
374 neighsum += neighsum;
377 membersum = membersum * memberscale + neighsum * neighscale;
378 *outptr = (
JSAMPLE) ((membersum + 32768) >> 16);
399 INT32 membersum, neighsum, memberscale, neighscale;
400 int colsum, lastcolsum, nextcolsum;
407 cinfo->image_width, output_cols);
415 memberscale = 65536L - cinfo->smoothing_factor * 512L;
416 neighscale = cinfo->smoothing_factor * 64;
418 for (outrow = 0; outrow <
compptr->v_samp_factor; outrow++) {
419 outptr = output_data[outrow];
420 inptr = input_data[outrow];
421 above_ptr = input_data[outrow-1];
422 below_ptr = input_data[outrow+1];
430 neighsum = colsum + (colsum - membersum) + nextcolsum;
431 membersum = membersum * memberscale + neighsum * neighscale;
432 *outptr++ = (
JSAMPLE) ((membersum + 32768) >> 16);
433 lastcolsum = colsum; colsum = nextcolsum;
435 for (colctr = output_cols - 2; colctr > 0; colctr--) {
437 above_ptr++; below_ptr++;
440 neighsum = lastcolsum + (colsum - membersum) + nextcolsum;
441 membersum = membersum * memberscale + neighsum * neighscale;
442 *outptr++ = (
JSAMPLE) ((membersum + 32768) >> 16);
443 lastcolsum = colsum; colsum = nextcolsum;
448 neighsum = lastcolsum + (colsum - membersum) + colsum;
449 membersum = membersum * memberscale + neighsum * neighscale;
450 *outptr = (
JSAMPLE) ((membersum + 32768) >> 16);
469 boolean smoothok =
TRUE;
479 if (cinfo->CCIR601_sampling)
480 ERREXIT(cinfo, JERR_CCIR601_NOTIMPL);
483 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
485 if (compptr->h_samp_factor == cinfo->max_h_samp_factor &&
486 compptr->v_samp_factor == cinfo->max_v_samp_factor) {
487#ifdef INPUT_SMOOTHING_SUPPORTED
488 if (cinfo->smoothing_factor) {
489 downsample->methods[ci] = fullsize_smooth_downsample;
490 downsample->pub.need_context_rows = TRUE;
493 downsample->methods[ci] = fullsize_downsample;
494 }
else if (
compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
495 compptr->v_samp_factor == cinfo->max_v_samp_factor) {
497 downsample->methods[ci] = h2v1_downsample;
498 }
else if (
compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
499 compptr->v_samp_factor * 2 == cinfo->max_v_samp_factor) {
500#ifdef INPUT_SMOOTHING_SUPPORTED
501 if (cinfo->smoothing_factor) {
502 downsample->methods[ci] = h2v2_smooth_downsample;
503 downsample->pub.need_context_rows = TRUE;
507 }
else if ((cinfo->max_h_samp_factor %
compptr->h_samp_factor) == 0 &&
508 (cinfo->max_v_samp_factor %
compptr->v_samp_factor) == 0) {
510 downsample->methods[ci] = int_downsample;
512 ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
515#ifdef INPUT_SMOOTHING_SUPPORTED
516 if (cinfo->smoothing_factor && !smoothok)
517 TRACEMS(cinfo, 0, JTRC_SMOOTH_NOTIMPL);
unsigned v[N_MAX]
Definition inflate.c:1584
start_pass_downsample(j_compress_ptr)
Definition jcsample.c:75
h2v2_smooth_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:292
fullsize_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:187
fullsize_smooth_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:392
h2v2_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:249
jinit_downsampler(j_compress_ptr cinfo)
Definition jcsample.c:464
expand_right_edge(JSAMPARRAY image_data, int num_rows, JDIMENSION input_cols, JDIMENSION output_cols)
Definition jcsample.c:87
h2v1_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:212
int_downsample(j_compress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY output_data)
Definition jcsample.c:140
my_downsampler * my_downsample_ptr
Definition jcsample.c:67
sep_downsample(j_compress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION in_row_index, JSAMPIMAGE output_buf, JDIMENSION out_row_group_index)
Definition jcsample.c:114
jpeg_component_info * compptr
Definition jdct.h:105
jpeg_component_info JCOEFPTR JSAMPARRAY output_buf
Definition jdct.h:106
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define TRACEMS(cinfo, lvl, code)
Definition jerror.h:252
#define SIZEOF(object)
Definition jinclude.h:83
unsigned int JDIMENSION
Definition jmorecfg.h:171
long INT32
Definition jmorecfg.h:161
char JSAMPLE
Definition jmorecfg.h:64
#define MAX_COMPONENTS
Definition jmorecfg.h:35
#define JMETHOD(type, methodname, arglist)
Definition jmorecfg.h:202
#define LOCAL(type)
Definition jmorecfg.h:186
#define METHODDEF(type)
Definition jmorecfg.h:184
#define GETJSAMPLE(value)
Definition jmorecfg.h:68
int JSAMPARRAY int int num_rows
Definition jpegint.h:375
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
#define DCTSIZE
Definition jpeglib.h:41
JSAMPARRAY * JSAMPIMAGE
Definition jpeglib.h:68
JSAMPROW * JSAMPARRAY
Definition jpeglib.h:67
JSAMPLE FAR * JSAMPROW
Definition jpeglib.h:66
#define JPOOL_IMAGE
Definition jpeglib.h:749
struct jpeg_compress_struct * j_compress_ptr
Definition jpeglib.h:262
jcopy_sample_rows(JSAMPARRAY input_array, int source_row, JSAMPARRAY output_array, int dest_row, int num_rows, JDIMENSION num_cols)
Definition jutils.c:111
boolean need_context_rows
Definition jpegint.h:98
struct jpeg_downsampler pub
Definition jcsample.c:61
downsample1_ptr methods[MAX_COMPONENTS]
Definition jcsample.c:64
#define GLOBAL(g)
Definition crypt.c:87
if(GLOBAL(newzip))
Definition crypt.c:475
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
G inptr
Definition fileio.c:766
typedef int(UZ_EXP MsgFn)()
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263