Resolve mismatch with jpgcrush
Add early termination to search for best Al parameter
This commit is contained in:
@@ -591,8 +591,10 @@ select_scans (j_compress_ptr cinfo, int next_scan_number)
|
|||||||
for (i = 0; i < Al; i++)
|
for (i = 0; i < Al; i++)
|
||||||
size[Al] += cinfo->scan_size[3 + 2*cinfo->Al_max_luma + i];
|
size[Al] += cinfo->scan_size[3 + 2*cinfo->Al_max_luma + i];
|
||||||
|
|
||||||
if (size[Al] < size[cinfo->best_Al])
|
if (Al == 0 || size[Al] < size[cinfo->best_Al])
|
||||||
cinfo->best_Al = Al;
|
cinfo->best_Al = Al;
|
||||||
|
else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* HACK! casting a const to a non-const :-( */
|
/* HACK! casting a const to a non-const :-( */
|
||||||
@@ -673,8 +675,10 @@ select_scans (j_compress_ptr cinfo, int next_scan_number)
|
|||||||
size[Al] += cinfo->scan_size[base_scan_idx + 5 + 4*cinfo->Al_max_chroma + 2*i];
|
size[Al] += cinfo->scan_size[base_scan_idx + 5 + 4*cinfo->Al_max_chroma + 2*i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size[Al] < size[cinfo->best_Al])
|
if (Al == 0 || size[Al] < size[cinfo->best_Al])
|
||||||
cinfo->best_Al = Al;
|
cinfo->best_Al = Al;
|
||||||
|
else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jpeg_scan_info *scanptr = (jpeg_scan_info *)&cinfo->scan_info[next_scan_number];
|
jpeg_scan_info *scanptr = (jpeg_scan_info *)&cinfo->scan_info[next_scan_number];
|
||||||
|
|||||||
Reference in New Issue
Block a user