48 if (! (*dest->empty_output_buffer) (cinfo))
49 ERREXIT(cinfo, JERR_CANT_SUSPEND);
81 JQUANT_TBL * qtbl = cinfo->quant_tbl_ptrs[index];
86 ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, index);
95 emit_marker(cinfo, M_DQT);
97 emit_2bytes(cinfo, prec ? DCTSIZE2*2 + 1 + 2 : DCTSIZE2 + 1 + 2);
99 emit_byte(cinfo, index + (prec<<4));
101 for (i = 0; i < DCTSIZE2; i++) {
103 unsigned int qval = qtbl->quantval[jpeg_natural_order[i]];
105 emit_byte(cinfo, (int) (qval >> 8));
106 emit_byte(cinfo, (int) (qval & 0xFF));
124 htbl = cinfo->ac_huff_tbl_ptrs[index];
127 htbl = cinfo->dc_huff_tbl_ptrs[index];
131 ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, index);
133 if (!
htbl->sent_table) {
134 emit_marker(cinfo, M_DHT);
137 for (i = 1; i <= 16; i++)
138 length += htbl->bits[i];
140 emit_2bytes(cinfo, length + 2 + 1 + 16);
141 emit_byte(cinfo, index);
143 for (i = 1; i <= 16; i++)
144 emit_byte(cinfo, htbl->bits[i]);
146 for (i = 0; i < length; i++)
147 emit_byte(cinfo, htbl->huffval[i]);
149 htbl->sent_table = TRUE;
160#ifdef C_ARITH_CODING_SUPPORTED
167 dc_in_use[
i] = ac_in_use[
i] = 0;
169 for (
i = 0;
i < cinfo->comps_in_scan;
i++) {
171 dc_in_use[
compptr->dc_tbl_no] = 1;
172 ac_in_use[
compptr->ac_tbl_no] = 1;
177 length += dc_in_use[
i] + ac_in_use[
i];
186 emit_byte(cinfo, cinfo->arith_dc_L[
i] + (cinfo->arith_dc_U[
i]<<4));
218 emit_2bytes(cinfo, 3 * cinfo->num_components + 2 + 5 + 1);
221 if ((
long) cinfo->image_height > 65535L ||
222 (
long) cinfo->image_width > 65535L)
223 ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (
unsigned int) 65535);
231 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
249 emit_2bytes(cinfo, 2 * cinfo->comps_in_scan + 2 + 1 + 3);
253 for (
i = 0;
i < cinfo->comps_in_scan;
i++) {
258 if (cinfo->progressive_mode) {
264 if (cinfo->Ss == 0) {
266 if (cinfo->Ah != 0 && !cinfo->arith_code)
277 emit_byte(cinfo, (cinfo->Ah << 4) + cinfo->Al);
299 emit_2bytes(cinfo, 2 + 4 + 1 + 2 + 1 + 2 + 2 + 1 + 1);
306 emit_byte(cinfo, cinfo->JFIF_major_version);
307 emit_byte(cinfo, cinfo->JFIF_minor_version);
348 switch (cinfo->jpeg_color_space) {
374 if (
datalen > (
unsigned int) 65533)
375 ERREXIT(cinfo, JERR_BAD_LENGTH);
409 marker->last_restart_interval = 0;
411 if (cinfo->write_JFIF_header)
413 if (cinfo->write_Adobe_marker)
437 for (ci = 0,
compptr = cinfo->comp_info; ci < cinfo->num_components;
439 prec += emit_dqt(cinfo, compptr->quant_tbl_no);
446 if (cinfo->arith_code || cinfo->progressive_mode ||
447 cinfo->data_precision != 8) {
451 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
453 if (compptr->dc_tbl_no > 1 || compptr->ac_tbl_no > 1)
456 if (prec && is_baseline) {
459 TRACEMS(cinfo, 0, JTRC_16BIT_TABLES);
464 if (cinfo->arith_code) {
465 emit_sof(cinfo, M_SOF9);
467 if (cinfo->progressive_mode)
468 emit_sof(cinfo, M_SOF2);
469 else if (is_baseline)
470 emit_sof(cinfo, M_SOF0);
472 emit_sof(cinfo, M_SOF1);
490 if (cinfo->arith_code) {
500 for (i = 0; i < cinfo->comps_in_scan; i++) {
501 compptr = cinfo->cur_comp_info[i];
502 if (cinfo->progressive_mode) {
504 if (cinfo->Ss == 0) {
506 emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
508 emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
512 emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
513 emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
521 if (cinfo->restart_interval !=
marker->last_restart_interval) {
523 marker->last_restart_interval = cinfo->restart_interval;
556 if (cinfo->quant_tbl_ptrs[
i] !=
NULL)
560 if (! cinfo->arith_code) {
562 if (cinfo->dc_huff_tbl_ptrs[
i] !=
NULL)
564 if (cinfo->ac_huff_tbl_ptrs[
i] !=
NULL)
596 marker->last_restart_interval = 0;
int * td
Definition inflate.c:934
register unsigned i
Definition inflate.c:1575
static PuglViewHint int value
Definition pugl.h:1708
#define emit_byte(state, val, action)
Definition jchuff.c:270
JHUFF_TBL * htbl
Definition jchuff.h:50
write_file_header(j_compress_ptr cinfo)
Definition jcmarker.c:402
my_marker_writer * my_marker_ptr
Definition jcmarker.c:25
emit_adobe_app14(j_compress_ptr cinfo)
Definition jcmarker.c:317
write_frame_header(j_compress_ptr cinfo)
Definition jcmarker.c:427
write_marker_byte(j_compress_ptr cinfo, int val)
Definition jcmarker.c:383
emit_dqt(j_compress_ptr cinfo, int index)
Definition jcmarker.c:77
emit_dri(j_compress_ptr cinfo)
Definition jcmarker.c:198
emit_dht(j_compress_ptr cinfo, int index, boolean is_ac)
Definition jcmarker.c:117
emit_sof(j_compress_ptr cinfo, JPEG_MARKER code)
Definition jcmarker.c:210
write_marker_header(j_compress_ptr cinfo, int marker, unsigned int datalen)
Definition jcmarker.c:371
emit_dac(j_compress_ptr)
Definition jcmarker.c:155
jinit_marker_writer(j_compress_ptr cinfo)
Definition jcmarker.c:578
emit_2bytes(j_compress_ptr cinfo, int value)
Definition jcmarker.c:64
write_file_trailer(j_compress_ptr cinfo)
Definition jcmarker.c:535
emit_marker(j_compress_ptr cinfo, JPEG_MARKER mark)
Definition jcmarker.c:55
emit_jfif_app0(j_compress_ptr cinfo)
Definition jcmarker.c:282
write_scan_header(j_compress_ptr cinfo)
Definition jcmarker.c:484
emit_sos(j_compress_ptr cinfo)
Definition jcmarker.c:241
write_tables_only(j_compress_ptr cinfo)
Definition jcmarker.c:549
jpeg_component_info * compptr
Definition jdct.h:105
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define TRACEMS(cinfo, lvl, code)
Definition jerror.h:252
#define ERREXIT1(cinfo, code, p1)
Definition jerror.h:208
#define SIZEOF(object)
Definition jinclude.h:83
JPEG_MARKER
Definition jinclude.h:98
@ M_EOI
Definition jinclude.h:131
@ M_APP14
Definition jinclude.h:153
@ M_DAC
Definition jinclude.h:119
@ M_SOI
Definition jinclude.h:130
@ M_DRI
Definition jinclude.h:135
@ M_SOS
Definition jinclude.h:132
@ M_APP0
Definition jinclude.h:139
char JOCTET
Definition jmorecfg.h:115
#define LOCAL(type)
Definition jmorecfg.h:186
#define METHODDEF(type)
Definition jmorecfg.h:184
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
int const JOCTET unsigned int datalen
Definition jpeglib.h:951
#define NUM_ARITH_TBLS
Definition jpeglib.h:45
int marker
Definition jpeglib.h:950
#define NUM_HUFF_TBLS
Definition jpeglib.h:44
@ JCS_YCCK
Definition jpeglib.h:212
@ JCS_YCbCr
Definition jpeglib.h:210
int val
Definition jpeglib.h:956
#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
#define DCTSIZE2
Definition jpeglib.h:42
png_uint_32 length
Definition png.c:2247
boolean sent_table
Definition jpeglib.h:94
UINT16 quantval[DCTSIZE2]
Definition jpeglib.h:88
size_t free_in_buffer
Definition jpeglib.h:715
JOCTET * next_output_byte
Definition jpeglib.h:714
struct jpeg_marker_writer pub
Definition jcmarker.c:20
unsigned int last_restart_interval
Definition jcmarker.c:22
#define GLOBAL(g)
Definition crypt.c:87
if(GLOBAL(newzip))
Definition crypt.c:475
#define void
Definition unzip.h:396
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298