27#ifdef INPUT_SMOOTHING_SUPPORTED
28#define CONTEXT_ROWS_SUPPORTED
64#ifdef CONTEXT_ROWS_SUPPORTED
83 ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
89#ifdef CONTEXT_ROWS_SUPPORTED
107 int input_rows,
int output_rows)
111 for (row = input_rows; row < output_rows; row++) {
139 while (*in_row_ctr < in_rows_avail &&
140 *out_row_group_ctr < out_row_groups_avail) {
142 inrows = in_rows_avail - *in_row_ctr;
143 numrows = cinfo->max_v_samp_factor - prep->
next_buf_row;
145 (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
149 *in_row_ctr += numrows;
155 for (ci = 0; ci < cinfo->num_components; ci++) {
163 (*cinfo->downsample->downsample) (cinfo,
167 (*out_row_group_ctr)++;
173 *out_row_group_ctr < out_row_groups_avail) {
174 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
178 (
int) (*out_row_group_ctr *
compptr->v_samp_factor),
179 (
int) (out_row_groups_avail *
compptr->v_samp_factor));
181 *out_row_group_ctr = out_row_groups_avail;
188#ifdef CONTEXT_ROWS_SUPPORTED
203 int buf_height = cinfo->max_v_samp_factor * 3;
206 while (*out_row_group_ctr < out_row_groups_avail) {
207 if (*in_row_ctr < in_rows_avail) {
209 inrows = in_rows_avail - *in_row_ctr;
212 (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
217 if (prep->
rows_to_go == cinfo->image_height) {
218 for (ci = 0; ci < cinfo->num_components; ci++) {
220 for (row = 1; row <= cinfo->max_v_samp_factor; row++) {
223 1, cinfo->image_width);
227 *in_row_ctr += numrows;
236 for (ci = 0; ci < cinfo->num_components; ci++) {
245 (*cinfo->downsample->downsample) (cinfo,
249 (*out_row_group_ctr)++;
270 int rgroup_height = cinfo->max_v_samp_factor;
280 (cinfo->num_components * 5 * rgroup_height) *
283 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
289 true_buffer = (*cinfo->mem->alloc_sarray)
290 ((j_common_ptr) cinfo, JPOOL_IMAGE,
291 (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
292 cinfo->max_h_samp_factor) / compptr->h_samp_factor),
293 (JDIMENSION) (3 * rgroup_height));
295 MEMCOPY(fake_buffer + rgroup_height, true_buffer,
296 3 * rgroup_height * SIZEOF(JSAMPROW));
298 for (i = 0; i < rgroup_height; i++) {
299 fake_buffer[i] = true_buffer[2 * rgroup_height + i];
300 fake_buffer[4 * rgroup_height + i] = true_buffer[i];
302 prep->
color_buf[ci] = fake_buffer + rgroup_height;
303 fake_buffer += 5 * rgroup_height;
322 ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
334 if (cinfo->downsample->need_context_rows) {
336#ifdef CONTEXT_ROWS_SUPPORTED
337 prep->pub.pre_process_data = pre_process_context;
338 create_context_buffer(cinfo);
340 ERREXIT(cinfo, JERR_NOT_COMPILED);
344 prep->pub.pre_process_data = pre_process_data;
345 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
347 prep->color_buf[ci] = (*cinfo->mem->alloc_sarray)
348 ((j_common_ptr) cinfo, JPOOL_IMAGE,
349 (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
350 cinfo->max_h_samp_factor) / compptr->h_samp_factor),
351 (JDIMENSION) cinfo->max_v_samp_factor);
register unsigned i
Definition inflate.c:1575
start_pass_prep(j_compress_ptr cinfo, J_BUF_MODE pass_mode)
Definition jcprepct.c:78
create_context_buffer(j_compress_ptr cinfo)
Definition jcprepct.c:267
jinit_c_prep_controller(j_compress_ptr cinfo, boolean need_full_buffer)
Definition jcprepct.c:315
my_prep_controller * my_prep_ptr
Definition jcprepct.c:70
pre_process_context(j_compress_ptr cinfo, JSAMPARRAY input_buf, JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail, JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr, JDIMENSION out_row_groups_avail)
Definition jcprepct.c:195
pre_process_data(j_compress_ptr cinfo, JSAMPARRAY input_buf, JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail, JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr, JDIMENSION out_row_groups_avail)
Definition jcprepct.c:128
expand_bottom_edge(JSAMPARRAY image_data, JDIMENSION num_cols, int input_rows, int output_rows)
Definition jcprepct.c:106
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 SIZEOF(object)
Definition jinclude.h:83
unsigned int JDIMENSION
Definition jmorecfg.h:171
#define MAX_COMPONENTS
Definition jmorecfg.h:35
#define LOCAL(type)
Definition jmorecfg.h:186
#define METHODDEF(type)
Definition jmorecfg.h:184
J_BUF_MODE
Definition jpegint.h:16
@ JBUF_PASS_THRU
Definition jpegint.h:17
boolean need_full_buffer
Definition jpegint.h:338
int JSAMPARRAY int int JDIMENSION num_cols
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
int next_buf_stop
Definition jcprepct.c:66
int this_row_group
Definition jcprepct.c:65
struct jpeg_c_prep_controller pub
Definition jcprepct.c:54
JDIMENSION rows_to_go
Definition jcprepct.c:61
JSAMPARRAY color_buf[MAX_COMPONENTS]
Definition jcprepct.c:59
int next_buf_row
Definition jcprepct.c:62
#define GLOBAL(g)
Definition crypt.c:87
typedef int(UZ_EXP MsgFn)()
#define MIN(a, b)
Definition unzpriv.h:2649