25#if TRANSFORMS_SUPPORTED
84 for (ci = 0; ci <
dstinfo->num_components; ci++) {
86 comp_width = MCU_cols *
compptr->h_samp_factor;
87 for (blk_y = 0; blk_y <
compptr->height_in_blocks;
88 blk_y +=
compptr->v_samp_factor) {
89 buffer = (*srcinfo->mem->access_virt_barray)
92 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
93 for (blk_x = 0; blk_x * 2 < comp_width; blk_x++) {
94 ptr1 = buffer[offset_y][blk_x];
95 ptr2 = buffer[offset_y][comp_width - blk_x - 1];
120 JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
121 int ci,
i,
j, offset_y;
136 for (ci = 0; ci <
dstinfo->num_components; ci++) {
138 comp_height = MCU_rows *
compptr->v_samp_factor;
139 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
140 dst_blk_y +=
compptr->v_samp_factor) {
141 dst_buffer = (*srcinfo->mem->access_virt_barray)
142 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
144 if (dst_blk_y < comp_height) {
146 src_buffer = (*srcinfo->mem->access_virt_barray)
152 src_buffer = (*srcinfo->mem->access_virt_barray)
153 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y,
156 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
157 if (dst_blk_y < comp_height) {
159 dst_row_ptr = dst_buffer[offset_y];
160 src_row_ptr = src_buffer[
compptr->v_samp_factor - offset_y - 1];
161 for (dst_blk_x = 0; dst_blk_x <
compptr->width_in_blocks;
163 dst_ptr = dst_row_ptr[dst_blk_x];
164 src_ptr = src_row_ptr[dst_blk_x];
168 *dst_ptr++ = *src_ptr++;
171 *dst_ptr++ = - *src_ptr++;
192 int ci,
i,
j, offset_x, offset_y;
202 for (ci = 0; ci <
dstinfo->num_components; ci++) {
204 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
205 dst_blk_y +=
compptr->v_samp_factor) {
206 dst_buffer = (*srcinfo->mem->access_virt_barray)
207 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
209 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
210 for (dst_blk_x = 0; dst_blk_x <
compptr->width_in_blocks;
211 dst_blk_x +=
compptr->h_samp_factor) {
212 src_buffer = (*srcinfo->mem->access_virt_barray)
213 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
215 for (offset_x = 0; offset_x <
compptr->h_samp_factor; offset_x++) {
216 src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
217 dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
239 JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y;
240 int ci,
i,
j, offset_x, offset_y;
251 for (ci = 0; ci <
dstinfo->num_components; ci++) {
253 comp_width = MCU_cols *
compptr->h_samp_factor;
254 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
255 dst_blk_y +=
compptr->v_samp_factor) {
256 dst_buffer = (*srcinfo->mem->access_virt_barray)
257 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
259 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
260 for (dst_blk_x = 0; dst_blk_x <
compptr->width_in_blocks;
261 dst_blk_x +=
compptr->h_samp_factor) {
262 src_buffer = (*srcinfo->mem->access_virt_barray)
263 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
265 for (offset_x = 0; offset_x <
compptr->h_samp_factor; offset_x++) {
266 src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
267 if (dst_blk_x < comp_width) {
269 dst_ptr = dst_buffer[offset_y]
270 [comp_width - dst_blk_x - offset_x - 1];
280 dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
303 JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
304 int ci,
i,
j, offset_x, offset_y;
315 for (ci = 0; ci <
dstinfo->num_components; ci++) {
317 comp_height = MCU_rows *
compptr->v_samp_factor;
318 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
319 dst_blk_y +=
compptr->v_samp_factor) {
320 dst_buffer = (*srcinfo->mem->access_virt_barray)
321 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
323 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
324 for (dst_blk_x = 0; dst_blk_x <
compptr->width_in_blocks;
325 dst_blk_x +=
compptr->h_samp_factor) {
326 src_buffer = (*srcinfo->mem->access_virt_barray)
327 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
329 for (offset_x = 0; offset_x <
compptr->h_samp_factor; offset_x++) {
330 dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
331 if (dst_blk_y < comp_height) {
333 src_ptr = src_buffer[offset_x]
334 [comp_height - dst_blk_y - offset_y - 1];
344 src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
367 JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
368 int ci,
i,
j, offset_y;
377 for (ci = 0; ci <
dstinfo->num_components; ci++) {
379 comp_width = MCU_cols *
compptr->h_samp_factor;
380 comp_height = MCU_rows *
compptr->v_samp_factor;
381 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
382 dst_blk_y +=
compptr->v_samp_factor) {
383 dst_buffer = (*srcinfo->mem->access_virt_barray)
384 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
386 if (dst_blk_y < comp_height) {
388 src_buffer = (*srcinfo->mem->access_virt_barray)
394 src_buffer = (*srcinfo->mem->access_virt_barray)
395 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y,
398 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
399 if (dst_blk_y < comp_height) {
401 dst_row_ptr = dst_buffer[offset_y];
402 src_row_ptr = src_buffer[
compptr->v_samp_factor - offset_y - 1];
404 for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) {
405 dst_ptr = dst_row_ptr[dst_blk_x];
406 src_ptr = src_row_ptr[comp_width - dst_blk_x - 1];
410 *dst_ptr++ = *src_ptr++;
411 *dst_ptr++ = - *src_ptr++;
415 *dst_ptr++ = - *src_ptr++;
416 *dst_ptr++ = *src_ptr++;
421 for (; dst_blk_x <
compptr->width_in_blocks; dst_blk_x++) {
422 dst_ptr = dst_row_ptr[dst_blk_x];
423 src_ptr = src_row_ptr[dst_blk_x];
426 *dst_ptr++ = *src_ptr++;
428 *dst_ptr++ = - *src_ptr++;
433 dst_row_ptr = dst_buffer[offset_y];
434 src_row_ptr = src_buffer[offset_y];
436 for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) {
437 dst_ptr = dst_row_ptr[dst_blk_x];
438 src_ptr = src_row_ptr[comp_width - dst_blk_x - 1];
440 *dst_ptr++ = *src_ptr++;
441 *dst_ptr++ = - *src_ptr++;
445 for (; dst_blk_x <
compptr->width_in_blocks; dst_blk_x++) {
446 dst_ptr = dst_row_ptr[dst_blk_x];
447 src_ptr = src_row_ptr[dst_blk_x];
449 *dst_ptr++ = *src_ptr++;
472 JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
473 int ci,
i,
j, offset_x, offset_y;
481 for (ci = 0; ci <
dstinfo->num_components; ci++) {
483 comp_width = MCU_cols *
compptr->h_samp_factor;
484 comp_height = MCU_rows *
compptr->v_samp_factor;
485 for (dst_blk_y = 0; dst_blk_y <
compptr->height_in_blocks;
486 dst_blk_y +=
compptr->v_samp_factor) {
487 dst_buffer = (*srcinfo->mem->access_virt_barray)
488 ((
j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
490 for (offset_y = 0; offset_y <
compptr->v_samp_factor; offset_y++) {
491 for (dst_blk_x = 0; dst_blk_x <
compptr->width_in_blocks;
492 dst_blk_x +=
compptr->h_samp_factor) {
493 src_buffer = (*srcinfo->mem->access_virt_barray)
494 ((
j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
496 for (offset_x = 0; offset_x <
compptr->h_samp_factor; offset_x++) {
497 if (dst_blk_y < comp_height) {
498 src_ptr = src_buffer[offset_x]
499 [comp_height - dst_blk_y - offset_y - 1];
500 if (dst_blk_x < comp_width) {
502 dst_ptr = dst_buffer[offset_y]
503 [comp_width - dst_blk_x - offset_x - 1];
519 dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
529 src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
530 if (dst_blk_x < comp_width) {
532 dst_ptr = dst_buffer[offset_y]
533 [comp_width - dst_blk_x - offset_x - 1];
543 dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
575 if (
info->force_grayscale &&
579 info->num_components = 1;
585 switch (
info->transform) {
599 for (ci = 0; ci <
info->num_components; ci++) {
601 coef_arrays[ci] = (*srcinfo->mem->request_virt_barray)
604 (
long)
compptr->h_samp_factor),
606 (
long)
compptr->v_samp_factor),
621 for (ci = 0; ci <
info->num_components; ci++) {
622 compptr = srcinfo->comp_info + ci;
623 coef_arrays[ci] = (*srcinfo->mem->request_virt_barray)
626 (
long)
compptr->v_samp_factor),
628 (
long)
compptr->h_samp_factor),
654 for (ci = 0; ci <
dstinfo->num_components; ci++) {
656 itemp =
compptr->h_samp_factor;
658 compptr->v_samp_factor = itemp;
664 if (qtblptr !=
NULL) {
666 for (
j = 0;
j <
i;
j++) {
682 int ci, max_h_samp_factor;
689 max_h_samp_factor = 1;
690 for (ci = 0; ci <
dstinfo->num_components; ci++) {
691 int h_samp_factor =
dstinfo->comp_info[ci].h_samp_factor;
692 max_h_samp_factor =
MAX(max_h_samp_factor, h_samp_factor);
702 int ci, max_v_samp_factor;
709 max_v_samp_factor = 1;
710 for (ci = 0; ci <
dstinfo->num_components; ci++) {
711 int v_samp_factor =
dstinfo->comp_info[ci].v_samp_factor;
712 max_v_samp_factor =
MAX(max_v_samp_factor, v_samp_factor);
738 if (
info->force_grayscale) {
747 dstinfo->num_components == 3) ||
749 dstinfo->num_components == 1)) {
751 int sv_quant_tbl_no =
dstinfo->comp_info[0].quant_tbl_no;
753 dstinfo->comp_info[0].quant_tbl_no = sv_quant_tbl_no;
761 switch (
info->transform) {
803 if (
info->workspace_coef_arrays !=
NULL)
804 return info->workspace_coef_arrays;
826 switch (
info->transform) {
863#ifdef SAVE_MARKERS_SUPPORTED
872 for (
m = 0;
m < 16;
m++)
897 if (dstinfo->write_JFIF_header &&
898 marker->marker == JPEG_APP0 &&
899 marker->data_length >= 5 &&
900 GETJOCTET(marker->data[0]) == 0x4A &&
901 GETJOCTET(marker->data[1]) == 0x46 &&
902 GETJOCTET(marker->data[2]) == 0x49 &&
903 GETJOCTET(marker->data[3]) == 0x46 &&
904 GETJOCTET(marker->data[4]) == 0)
906 if (dstinfo->write_Adobe_marker &&
907 marker->marker == JPEG_APP0+14 &&
908 marker->data_length >= 5 &&
909 GETJOCTET(marker->data[0]) == 0x41 &&
910 GETJOCTET(marker->data[1]) == 0x64 &&
911 GETJOCTET(marker->data[2]) == 0x6F &&
912 GETJOCTET(marker->data[3]) == 0x62 &&
913 GETJOCTET(marker->data[4]) == 0x65)
915#ifdef NEED_FAR_POINTERS
919 jpeg_write_m_header(dstinfo, marker->marker, marker->data_length);
920 for (i = 0; i < marker->data_length; i++)
921 jpeg_write_m_byte(dstinfo, marker->data[i]);
static const unsigned char temp2[]
Definition DistrhoArtwork3BandEQ.cpp:2750
static const unsigned char temp1[]
Definition DistrhoArtwork3BandEQ.cpp:5
unsigned * m
Definition inflate.c:1559
register unsigned k
Definition inflate.c:946
register unsigned j
Definition inflate.c:1576
register unsigned i
Definition inflate.c:1575
jpeg_write_marker(j_compress_ptr cinfo, int marker, const JOCTET *dataptr, unsigned int datalen)
Definition jcapimin.c:192
boolean int tblno
Definition jchuff.h:45
jpeg_set_colorspace(j_compress_ptr cinfo, J_COLOR_SPACE colorspace)
Definition jcparam.c:391
jpeg_component_info * compptr
Definition jdct.h:105
jpeg_save_markers(j_decompress_ptr cinfo, int marker_code, unsigned int length_limit)
Definition jdmarker.c:1232
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define SIZEOF(object)
Definition jinclude.h:83
struct backing_store_struct * info
Definition jmemsys.h:183
unsigned int JDIMENSION
Definition jmorecfg.h:171
unsigned int UINT16
Definition jmorecfg.h:149
#define LOCAL(type)
Definition jmorecfg.h:186
short JCOEF
Definition jmorecfg.h:99
struct jpeg_decompress_struct * j_decompress_ptr
Definition jpeglib.h:263
JBLOCK FAR * JBLOCKROW
Definition jpeglib.h:71
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr
Definition jpeglib.h:193
#define DCTSIZE
Definition jpeglib.h:41
int marker
Definition jpeglib.h:950
j_compress_ptr dstinfo
Definition jpeglib.h:1019
@ JCS_YCbCr
Definition jpeglib.h:210
@ JCS_GRAYSCALE
Definition jpeglib.h:208
JCOEF FAR * JCOEFPTR
Definition jpeglib.h:75
struct jvirt_barray_control * jvirt_barray_ptr
Definition jpeglib.h:753
JBLOCKROW * JBLOCKARRAY
Definition jpeglib.h:72
#define JPEG_COM
Definition jpeglib.h:1048
#define NUM_QUANT_TBLS
Definition jpeglib.h:43
#define JPOOL_IMAGE
Definition jpeglib.h:749
struct jpeg_compress_struct * j_compress_ptr
Definition jpeglib.h:262
jvirt_barray_ptr * coef_arrays
Definition jpeglib.h:1017
#define JPEG_APP0
Definition jpeglib.h:1047
#define DCTSIZE2
Definition jpeglib.h:42
jcopy_block_row(JBLOCKROW input_row, JBLOCKROW output_row, JDIMENSION num_blocks)
Definition jutils.c:145
jround_up(long a, long b)
Definition jutils.c:81
jtransform_execute_transformation(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jpeg_transform_info *info)
Definition juce_JPEGLoader.cpp:819
jtransform_adjust_parameters(j_decompress_ptr, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jpeg_transform_info *info)
Definition juce_JPEGLoader.cpp:732
do_rot_180(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:358
trim_bottom_edge(j_compress_ptr dstinfo)
Definition juce_JPEGLoader.cpp:700
j_compress_ptr jvirt_barray_ptr * src_coef_arrays
Definition juce_JPEGLoader.cpp:107
trim_right_edge(j_compress_ptr dstinfo)
Definition juce_JPEGLoader.cpp:680
transpose_critical_parameters(j_compress_ptr dstinfo)
Definition juce_JPEGLoader.cpp:640
do_flip_v(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:115
jtransform_request_workspace(j_decompress_ptr srcinfo, jpeg_transform_info *info)
Definition juce_JPEGLoader.cpp:568
do_rot_90(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:230
do_transverse(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:459
do_transpose(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:186
do_flip_h(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays)
Definition juce_JPEGLoader.cpp:66
do_rot_270(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays)
Definition juce_JPEGLoader.cpp:294
UINT16 quantval[DCTSIZE2]
Definition jpeglib.h:88
int num_components
Definition jpeglib.h:422
J_COLOR_SPACE jpeg_color_space
Definition jpeglib.h:423
jpeg_component_info * comp_info
Definition jpeglib.h:535
jcopy_markers_execute(j_decompress_ptr srcinfo, j_compress_ptr dstinfo, JCOPY_OPTION)
Definition transupp.c:886
jcopy_markers_setup(j_decompress_ptr srcinfo, JCOPY_OPTION option)
Definition transupp.c:861
@ JXFORM_FLIP_H
Definition transupp.h:42
@ JXFORM_ROT_270
Definition transupp.h:48
@ JXFORM_TRANSPOSE
Definition transupp.h:44
@ JXFORM_TRANSVERSE
Definition transupp.h:45
@ JXFORM_NONE
Definition transupp.h:41
@ JXFORM_ROT_180
Definition transupp.h:47
@ JXFORM_FLIP_V
Definition transupp.h:43
@ JXFORM_ROT_90
Definition transupp.h:46
JCOPY_OPTION
Definition transupp.h:121
@ JCOPYOPT_NONE
Definition transupp.h:122
@ JCOPYOPT_ALL
Definition transupp.h:124
#define GLOBAL(g)
Definition crypt.c:87
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298
#define MAX(a, b)
Definition unzpriv.h:2646