Fix #64
Setting a user-defined quality level in cjpeg was incorrectly setting quantization table
This commit is contained in:
@@ -110,10 +110,17 @@ jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
|
|||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
/* Set up two quantization tables using the specified scaling */
|
/* Set up two quantization tables using the specified scaling */
|
||||||
|
if (cinfo->use_flat_quant_tbl) {
|
||||||
|
jpeg_add_quant_table(cinfo, 0, flat_quant_tbl,
|
||||||
|
cinfo->q_scale_factor[0], force_baseline);
|
||||||
|
jpeg_add_quant_table(cinfo, 1, flat_quant_tbl,
|
||||||
|
cinfo->q_scale_factor[1], force_baseline);
|
||||||
|
} else {
|
||||||
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
|
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
|
||||||
cinfo->q_scale_factor[0], force_baseline);
|
cinfo->q_scale_factor[0], force_baseline);
|
||||||
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
|
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
|
||||||
cinfo->q_scale_factor[1], force_baseline);
|
cinfo->q_scale_factor[1], force_baseline);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
17
rdswitch.c
17
rdswitch.c
@@ -300,14 +300,31 @@ static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
|
|||||||
99, 99, 99, 99, 99, 99, 99, 99
|
99, 99, 99, 99, 99, 99, 99, 99
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const unsigned int flat_quant_tbl[DCTSIZE2] = {
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16
|
||||||
|
};
|
||||||
|
|
||||||
LOCAL(void)
|
LOCAL(void)
|
||||||
jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
|
jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
|
||||||
{
|
{
|
||||||
|
if (cinfo->use_flat_quant_tbl) {
|
||||||
|
jpeg_add_quant_table(cinfo, 0, flat_quant_tbl,
|
||||||
|
q_scale_factor[0], force_baseline);
|
||||||
|
jpeg_add_quant_table(cinfo, 1, flat_quant_tbl,
|
||||||
|
q_scale_factor[1], force_baseline);
|
||||||
|
} else {
|
||||||
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
|
jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
|
||||||
q_scale_factor[0], force_baseline);
|
q_scale_factor[0], force_baseline);
|
||||||
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
|
jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
|
||||||
q_scale_factor[1], force_baseline);
|
q_scale_factor[1], force_baseline);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user