]> granicus.if.org Git - openjpeg/commitdiff
backport rev 1013-1014 from trunk
authorMickael Savinaud <savmickael@users.noreply.github.com>
Wed, 19 Oct 2011 15:45:03 +0000 (15:45 +0000)
committerMickael Savinaud <savmickael@users.noreply.github.com>
Wed, 19 Oct 2011 15:45:03 +0000 (15:45 +0000)
CHANGES
applications/codec/convert.c
tests/comparePGXimages.c
tests/compareRAWimages.c

diff --git a/CHANGES b/CHANGES
index 505346676c224a562bf87ff52e7bf71ed9cae0ef..b345557b4e9deb0febd769df26d4ac6900a3f3e8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,9 @@ What's New for OpenJPEG
 ! : changed
 + : added
 
+October 19, 2011
+* [mickael] backport rev 1013-1014 from trunk
+
 October 10, 2011
 * [vincent] fix 'distcheck' rule
 * [antonin] modified indexer for JPIP, JPP-stream
index fae8b1311fa7172af23115c415c160aa06d2edf6..4efd1f1ded899eb800615ee38a47ae8a677d85a6 100644 (file)
@@ -389,7 +389,7 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
 int imagetotga(opj_image_t * image, const char *outfile) {
        int width, height, bpp, x, y;
        opj_bool write_alpha;
-       int i;
+       int i, adjustR, adjustG, adjustB;
        unsigned int alpha_channel;
        float r,g,b,a;
        unsigned char value;
@@ -426,15 +426,19 @@ int imagetotga(opj_image_t * image, const char *outfile) {
 
        scale = 255.0f / (float)((1<<image->comps[0].prec)-1);
 
+       adjustR = (image->comps[0].sgnd ? 1 << (image->comps[0].prec - 1) : 0);
+       adjustG = (image->comps[1].sgnd ? 1 << (image->comps[1].prec - 1) : 0);
+       adjustB = (image->comps[2].sgnd ? 1 << (image->comps[2].prec - 1) : 0);
+
        for (y=0; y < height; y++) {
                unsigned int index=y*width;
 
                for (x=0; x < width; x++, index++)      {
-                       r = (float)(image->comps[0].data[index]);
+                       r = (float)(image->comps[0].data[index] + adjustR);
 
                        if (image->numcomps>2) {
-                               g = (float)(image->comps[1].data[index]);
-                               b = (float)(image->comps[2].data[index]);
+                               g = (float)(image->comps[1].data[index] + adjustG);
+                               b = (float)(image->comps[2].data[index] + adjustB);
                        }
                        else  {// Greyscale ...
                                g = r;
index 97cd0baa4fc3340d205cf85b09be2e29b5ffea5b..48189156bbd41cc29c77ee638f51781aa20cc6c8 100644 (file)
@@ -321,7 +321,10 @@ double* parseToleranceValues( char* inArg, const int nbcomp)
     }
 
   if (it_comp != nbcomp)
+  {
+       free(outArgs);
     return NULL;
+  }
   else
     return outArgs;
 }
@@ -407,10 +410,21 @@ opj_image_t* readImageFromFilePGX(char* filename, int nbFilenamePGX, char *separ
     // Read the pgx file corresponding to the component
     image_read = pgxtoimage(filenameComponentPGX, &parameters);
     if (!image_read)
-      {
-      fprintf(stderr, "Unable to load pgx file\n");
-      return NULL;
-      }
+    {
+       int it_free_data;
+               fprintf(stderr, "Unable to load pgx file\n");
+
+               free(param_image_read);
+
+               for (it_free_data = 0; it_free_data < it_file; it_free_data++) {
+                       free(data[it_free_data]);
+               }
+               free(data);
+
+               free(filenameComponentPGX);
+
+               return NULL;
+       }
 
     // Set the image_read parameters
     param_image_read[it_file].x0 = 0;
@@ -498,10 +512,10 @@ int main(int argc, char **argv)
   if( parse_cmdline_cmp(argc, argv, &inParam) == EXIT_FAILURE )
     {
     comparePGXimages_help_display();
-    if (!inParam.tabMSEvalues) free(inParam.tabMSEvalues);
-    if (!inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
-    if (!inParam.base_filename) free(inParam.base_filename);
-    if (!inParam.test_filename) free(inParam.test_filename);
+    if (inParam.tabMSEvalues) free(inParam.tabMSEvalues);
+    if (inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
+    if (inParam.base_filename) free(inParam.base_filename);
+    if (inParam.test_filename) free(inParam.test_filename);
     return EXIT_FAILURE;
     }
 
@@ -560,10 +574,10 @@ int main(int argc, char **argv)
     }
   else
     {
-    if (!inParam.tabMSEvalues) free(inParam.tabMSEvalues);
-    if (!inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
-    if (!inParam.base_filename) free(inParam.base_filename);
-    if (!inParam.test_filename) free(inParam.test_filename);
+    if (inParam.tabMSEvalues) free(inParam.tabMSEvalues);
+    if (inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
+    if (inParam.base_filename) free(inParam.base_filename);
+    if (inParam.test_filename) free(inParam.test_filename);
     return EXIT_FAILURE;
     }
 
@@ -582,10 +596,10 @@ int main(int argc, char **argv)
     }
   else
     {
-    if (!inParam.tabMSEvalues) free(inParam.tabMSEvalues);
-    if (!inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
-    if (!inParam.base_filename) free(inParam.base_filename);
-    if (!inParam.test_filename) free(inParam.test_filename);
+    if (inParam.tabMSEvalues) free(inParam.tabMSEvalues);
+    if (inParam.tabPEAKvalues) free(inParam.tabPEAKvalues);
+    if (inParam.base_filename) free(inParam.base_filename);
+    if (inParam.test_filename) free(inParam.test_filename);
     free(filenamePNGbase);
     return EXIT_FAILURE;
     }
index fb037c248c6d9b782e58ea4637304b0db0a15d46..851dbfff48438faa2b53d58abbef9853cbcbfde2 100644 (file)
@@ -127,18 +127,52 @@ int main(int argc, char **argv)
        if (parse_cmdline_cmp(argc, argv, &inParam) == EXIT_FAILURE)
        {
                compareRAWimages_help_display();
+
+               /* Free Memory */
+               if (inParam.base_filename){
+                       free(inParam.base_filename);
+                       inParam.base_filename = NULL;
+               }
+               if (inParam.test_filename){
+                       free(inParam.test_filename);
+                       inParam.test_filename = NULL;
+               }
+
                return EXIT_FAILURE;
        }
 
        file_test = fopen(inParam.test_filename, "rb");
        if (!file_test) {
                fprintf(stderr, "Failed to open %s for reading !!\n", inParam.test_filename);
+
+               /* Free Memory */
+               if (inParam.base_filename){
+                       free(inParam.base_filename);
+                       inParam.base_filename = NULL;
+               }
+               if (inParam.test_filename){
+                       free(inParam.test_filename);
+                       inParam.test_filename = NULL;
+               }
+
                return EXIT_FAILURE;
        }
 
        file_base = fopen(inParam.base_filename, "rb");
        if (!file_base) {
                fprintf(stderr, "Failed to open %s for reading !!\n", inParam.base_filename);
+
+               /* Free Memory */
+               if (inParam.base_filename){
+                       free(inParam.base_filename);
+                       inParam.base_filename = NULL;
+               }
+               if (inParam.test_filename){
+                       free(inParam.test_filename);
+                       inParam.test_filename = NULL;
+               }
+
+               fclose(file_test);
                return EXIT_FAILURE;
        }
 
@@ -179,6 +213,16 @@ int main(int argc, char **argv)
                }
        }
 
+       /* Free Memory */
+       if (inParam.base_filename){
+               free(inParam.base_filename);
+               inParam.base_filename = NULL;
+       }
+       if (inParam.test_filename){
+               free(inParam.test_filename);
+               inParam.test_filename = NULL;
+       }
+
        fclose(file_test);
        fclose(file_base);