Sometimes the sampling factors in grayscale images can be > 1 (for instance, if compressing using 'cjpeg -sample 2x2 -grayscale'.) Technically, sampling factors have no meaning with grayscale JPEGs, and the libjpeg decompressor ignores them in that case. Thus, the TurboJPEG decompressor should ignore them as well.

git-svn-id: svn://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1417 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
DRC
2014-11-19 00:54:39 +00:00
parent 60ba1963fe
commit 24ad6a0179
2 changed files with 17 additions and 0 deletions

View File

@@ -316,6 +316,14 @@ static int setDecompDefaults(struct jpeg_decompress_struct *dinfo,
static int getSubsamp(j_decompress_ptr dinfo)
{
int retval=-1, i, k;
/* The sampling factors actually have no meaning with grayscale JPEG files,
and in fact it's possible to generate grayscale JPEGs with sampling
factors > 1 (even though those sampling factors are ignored by the
decompressor.) Thus, we need to treat grayscale as a special case. */
if(dinfo->num_components==1 && dinfo->jpeg_color_space==JCS_GRAYSCALE)
return TJSAMP_GRAY;
for(i=0; i<NUMSUBOPT; i++)
{
if(dinfo->num_components==pixelsize[i]