emit_byte(cinfo, cinfo->arith_ac_K[i]);
}
}
+#else
+ (void)cinfo;
#endif /* C_ARITH_CODING_SUPPORTED */
- cinfo = 0;
}
emit_byte(cinfo, compptr->component_id);
td = compptr->dc_tbl_no;
ta = compptr->ac_tbl_no;
- if (cinfo->progressive_mode) {
+ if (cinfo->process == JPROC_PROGRESSIVE) {
/* Progressive mode: only DC or only AC tables are used in one scan;
* furthermore, Huffman coding of DC refinement uses no table at all.
* We emit 0 for unused field(s); this is recommended by the P&M text
int ci, prec;
boolean is_baseline;
jpeg_component_info *compptr;
-
- /* Emit DQT for each quantization table.
- * Note that emit_dqt() suppresses any duplicate tables.
- */
+
prec = 0;
- for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
- ci++, compptr++) {
- prec += emit_dqt(cinfo, compptr->quant_tbl_no);
+ if (cinfo->process != JPROC_LOSSLESS) {
+ /* Emit DQT for each quantization table.
+ * Note that emit_dqt() suppresses any duplicate tables.
+ */
+ for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
+ ci++, compptr++) {
+ prec += emit_dqt(cinfo, compptr->quant_tbl_no);
+ }
+ /* now prec is nonzero iff there are any 16-bit quant tables. */
}
- /* now prec is nonzero iff there are any 16-bit quant tables. */
/* Check for a non-baseline specification.
* Note we assume that Huffman table numbers won't be changed later.
*/
- if (cinfo->arith_code || cinfo->progressive_mode ||
+ if (cinfo->arith_code || cinfo->process != JPROC_SEQUENTIAL ||
cinfo->data_precision != 8) {
is_baseline = FALSE;
} else {
/* Emit the proper SOF marker */
if (cinfo->arith_code) {
- emit_sof(cinfo, M_SOF9); /* SOF code for arithmetic coding */
+ if (cinfo->process == JPROC_PROGRESSIVE)
+ emit_sof(cinfo, M_SOF10); /* SOF code for progressive arithmetic */
+ else if (cinfo->process == JPROC_LOSSLESS)
+ emit_sof(cinfo, M_SOF11); /* SOF code for lossless arithmetic */
+ else
+ emit_sof(cinfo, M_SOF9); /* SOF code for sequential arithmetic */
} else {
- if (cinfo->progressive_mode)
+ if (cinfo->process == JPROC_PROGRESSIVE)
emit_sof(cinfo, M_SOF2); /* SOF code for progressive Huffman */
+ else if (cinfo->process == JPROC_LOSSLESS)
+ emit_sof(cinfo, M_SOF3); /* SOF code for lossless Huffman */
else if (is_baseline)
emit_sof(cinfo, M_SOF0); /* SOF code for baseline implementation */
else
*/
for (i = 0; i < cinfo->comps_in_scan; i++) {
compptr = cinfo->cur_comp_info[i];
- if (cinfo->progressive_mode) {
+ if (cinfo->process == JPROC_PROGRESSIVE) {
/* Progressive mode: only DC or only AC tables are used in one scan */
if (cinfo->Ss == 0) {
if (cinfo->Ah == 0) /* DC needs no table for refinement scan */
} else {
emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
}
+ } else if (cinfo->process == JPROC_LOSSLESS) {
+ /* Lossless mode: only DC tables are used */
+ emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
} else {
/* Sequential mode: need both DC and AC tables */
emit_dht(cinfo, compptr->dc_tbl_no, FALSE);