]> granicus.if.org Git - libjpeg-turbo/commitdiff
When tjDecodeYUV() is used with a "fresh" decompressor instance (one that hasn't...
authorDRC <dcommander@users.sourceforge.net>
Mon, 10 Mar 2014 09:34:04 +0000 (09:34 +0000)
committerDRC <dcommander@users.sourceforge.net>
Mon, 10 Mar 2014 09:34:04 +0000 (09:34 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1143 632fc199-4ca6-4c93-a231-07263d6284db

tjunittest.c
turbojpeg.c

index 6920ea197022f834cf83d30b8d8fd563c5989e54..d2d3e983d90516d4d59f50ce56fa716862914413 100644 (file)
@@ -414,14 +414,17 @@ void compTest(tjhandle handle, unsigned char **dstBuf,
        {
                unsigned long yuvSize=tjBufSizeYUV2(w, pad, h, subsamp);
                tjscalingfactor sf={1, 1};
+               tjhandle handle2=tjInitCompress();
+               if(!handle2) _throwtj();
 
                if((yuvBuf=(unsigned char *)malloc(yuvSize))==NULL)
                        _throw("Memory allocation failure");
                memset(yuvBuf, 0, yuvSize);
 
                printf("%s %s -> YUV %s ... ", pfStr, buStrLong, subNameLong[subsamp]);
-               _tj(tjEncodeYUV3(handle, srcBuf, w, 0, h, pf, yuvBuf, pad, subsamp,
+               _tj(tjEncodeYUV3(handle2, srcBuf, w, 0, h, pf, yuvBuf, pad, subsamp,
                        flags));
+               tjDestroy(handle2);
                snprintf(tempStr, 1024, "%s_enc_%s_%s_%s.yuv", basename, pfStr, buStr,
                        subName[subsamp]);
                writeJPEG(yuvBuf, yuvSize, tempStr);
@@ -476,6 +479,8 @@ void _decompTest(tjhandle handle, unsigned char *jpegBuf,
        {
                unsigned long yuvSize=tjBufSizeYUV2(scaledWidth, pad, scaledHeight,
                        subsamp);
+               tjhandle handle2=tjInitDecompress();
+               if(!handle2) _throwtj();
 
                if((yuvBuf=(unsigned char *)malloc(yuvSize))==NULL)
                        _throw("Memory allocation failure");
@@ -493,8 +498,9 @@ void _decompTest(tjhandle handle, unsigned char *jpegBuf,
 
                printf("YUV %s -> %s %s ... ", subNameLong[subsamp], pixFormatStr[pf],
                        (flags&TJFLAG_BOTTOMUP)? "Bottom-Up":"Top-Down ");
-               _tj(tjDecodeYUV(handle, yuvBuf, pad, subsamp, dstBuf, scaledWidth, 0,
+               _tj(tjDecodeYUV(handle2, yuvBuf, pad, subsamp, dstBuf, scaledWidth, 0,
                        scaledHeight, pf, flags));
+               tjDestroy(handle2);
        }
        else
        {
index edcf882aa0f8fd4d37e054da5543ef4453e33e4e..8ccb15e8f6d4096a1c2f4837d3dae7a11eaa410c 100644 (file)
@@ -1242,12 +1242,12 @@ static int setDecodeDefaults(struct jpeg_decompress_struct *dinfo,
 
        if(subsamp==TJSAMP_GRAY)
        {
-               dinfo->num_components=1;
+               dinfo->num_components=dinfo->comps_in_scan=1;
                dinfo->jpeg_color_space=JCS_GRAYSCALE;
        }
        else
        {
-               dinfo->num_components=3;
+               dinfo->num_components=dinfo->comps_in_scan=3;
                dinfo->jpeg_color_space=JCS_YCbCr;
        }
 
@@ -1265,6 +1265,12 @@ static int setDecodeDefaults(struct jpeg_decompress_struct *dinfo,
                        (i==0)? 0:1;
                dinfo->cur_comp_info[i]=compptr;
        }
+       dinfo->data_precision=8;
+       for(i=0; i<2; i++)
+       {
+               if(dinfo->quant_tbl_ptrs[i]==NULL)
+                       dinfo->quant_tbl_ptrs[i]=jpeg_alloc_quant_table((j_common_ptr)dinfo);
+       }
 
        return 0;
 }