Skip to content

Commit 55e3e7e

Browse files
committed
Fix #64
Setting a user-defined quality level in cjpeg was incorrectly setting quantization table
1 parent 0c59a4d commit 55e3e7e

File tree

2 files changed

+32
-8
lines changed

2 files changed

+32
-8
lines changed

jcparam.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,17 @@ jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
110110
*/
111111
{
112112
/* Set up two quantization tables using the specified scaling */
113-
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
114-
cinfo->q_scale_factor[0], force_baseline);
115-
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
116-
cinfo->q_scale_factor[1], force_baseline);
113+
if (cinfo->use_flat_quant_tbl) {
114+
jpeg_add_quant_table(cinfo, 0, flat_quant_tbl,
115+
cinfo->q_scale_factor[0], force_baseline);
116+
jpeg_add_quant_table(cinfo, 1, flat_quant_tbl,
117+
cinfo->q_scale_factor[1], force_baseline);
118+
} else {
119+
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
120+
cinfo->q_scale_factor[0], force_baseline);
121+
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
122+
cinfo->q_scale_factor[1], force_baseline);
123+
}
117124
}
118125
#endif
119126

rdswitch.c

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,31 @@ static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
300300
99, 99, 99, 99, 99, 99, 99, 99
301301
};
302302

303+
static const unsigned int flat_quant_tbl[DCTSIZE2] = {
304+
16, 16, 16, 16, 16, 16, 16, 16,
305+
16, 16, 16, 16, 16, 16, 16, 16,
306+
16, 16, 16, 16, 16, 16, 16, 16,
307+
16, 16, 16, 16, 16, 16, 16, 16,
308+
16, 16, 16, 16, 16, 16, 16, 16,
309+
16, 16, 16, 16, 16, 16, 16, 16,
310+
16, 16, 16, 16, 16, 16, 16, 16,
311+
16, 16, 16, 16, 16, 16, 16, 16
312+
};
303313

304314
LOCAL(void)
305315
jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
306316
{
307-
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
308-
q_scale_factor[0], force_baseline);
309-
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
310-
q_scale_factor[1], force_baseline);
317+
if (cinfo->use_flat_quant_tbl) {
318+
jpeg_add_quant_table(cinfo, 0, flat_quant_tbl,
319+
q_scale_factor[0], force_baseline);
320+
jpeg_add_quant_table(cinfo, 1, flat_quant_tbl,
321+
q_scale_factor[1], force_baseline);
322+
} else {
323+
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
324+
q_scale_factor[0], force_baseline);
325+
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
326+
q_scale_factor[1], force_baseline);
327+
}
311328
}
312329
#endif
313330

0 commit comments

Comments
 (0)