Add opj_image_data_alloc() / opj_image_data_free()
[openjpeg.git] / src / bin / common / color.c
index 8bb96043df7b1a07be2dc8c1e0ee2f0d395b7b76..665558f5e59d0f72df19ba713708b8ed2c1a48ad 100644 (file)
@@ -122,9 +122,9 @@ static void sycc444_to_rgb(opj_image_t *img)
     cb = img->comps[1].data;
     cr = img->comps[2].data;
 
-    d0 = r = (int*)malloc(sizeof(int) * max);
-    d1 = g = (int*)malloc(sizeof(int) * max);
-    d2 = b = (int*)malloc(sizeof(int) * max);
+    d0 = r = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d1 = g = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d2 = b = (int*)opj_image_data_alloc(sizeof(int) * max);
 
     if (r == NULL || g == NULL || b == NULL) {
         goto fails;
@@ -139,19 +139,19 @@ static void sycc444_to_rgb(opj_image_t *img)
         ++g;
         ++b;
     }
-    free(img->comps[0].data);
+    opj_image_data_free(img->comps[0].data);
     img->comps[0].data = d0;
-    free(img->comps[1].data);
+    opj_image_data_free(img->comps[1].data);
     img->comps[1].data = d1;
-    free(img->comps[2].data);
+    opj_image_data_free(img->comps[2].data);
     img->comps[2].data = d2;
     img->color_space = OPJ_CLRSPC_SRGB;
     return;
 
 fails:
-    free(r);
-    free(g);
-    free(b);
+    opj_image_data_free(r);
+    opj_image_data_free(g);
+    opj_image_data_free(b);
 }/* sycc444_to_rgb() */
 
 static void sycc422_to_rgb(opj_image_t *img)
@@ -174,9 +174,9 @@ static void sycc422_to_rgb(opj_image_t *img)
     cb = img->comps[1].data;
     cr = img->comps[2].data;
 
-    d0 = r = (int*)malloc(sizeof(int) * max);
-    d1 = g = (int*)malloc(sizeof(int) * max);
-    d2 = b = (int*)malloc(sizeof(int) * max);
+    d0 = r = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d1 = g = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d2 = b = (int*)opj_image_data_alloc(sizeof(int) * max);
 
     if (r == NULL || g == NULL || b == NULL) {
         goto fails;
@@ -222,11 +222,11 @@ static void sycc422_to_rgb(opj_image_t *img)
         }
     }
 
-    free(img->comps[0].data);
+    opj_image_data_free(img->comps[0].data);
     img->comps[0].data = d0;
-    free(img->comps[1].data);
+    opj_image_data_free(img->comps[1].data);
     img->comps[1].data = d1;
-    free(img->comps[2].data);
+    opj_image_data_free(img->comps[2].data);
     img->comps[2].data = d2;
 
     img->comps[1].w = img->comps[2].w = img->comps[0].w;
@@ -237,9 +237,9 @@ static void sycc422_to_rgb(opj_image_t *img)
     return;
 
 fails:
-    free(r);
-    free(g);
-    free(b);
+    opj_image_data_free(r);
+    opj_image_data_free(g);
+    opj_image_data_free(b);
 }/* sycc422_to_rgb() */
 
 static void sycc420_to_rgb(opj_image_t *img)
@@ -262,9 +262,9 @@ static void sycc420_to_rgb(opj_image_t *img)
     cb = img->comps[1].data;
     cr = img->comps[2].data;
 
-    d0 = r = (int*)malloc(sizeof(int) * max);
-    d1 = g = (int*)malloc(sizeof(int) * max);
-    d2 = b = (int*)malloc(sizeof(int) * max);
+    d0 = r = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d1 = g = (int*)opj_image_data_alloc(sizeof(int) * max);
+    d2 = b = (int*)opj_image_data_alloc(sizeof(int) * max);
 
     if (r == NULL || g == NULL || b == NULL) {
         goto fails;
@@ -380,11 +380,11 @@ static void sycc420_to_rgb(opj_image_t *img)
         }
     }
 
-    free(img->comps[0].data);
+    opj_image_data_free(img->comps[0].data);
     img->comps[0].data = d0;
-    free(img->comps[1].data);
+    opj_image_data_free(img->comps[1].data);
     img->comps[1].data = d1;
-    free(img->comps[2].data);
+    opj_image_data_free(img->comps[2].data);
     img->comps[2].data = d2;
 
     img->comps[1].w = img->comps[2].w = img->comps[0].w;
@@ -395,9 +395,9 @@ static void sycc420_to_rgb(opj_image_t *img)
     return;
 
 fails:
-    free(r);
-    free(g);
-    free(b);
+    opj_image_data_free(r);
+    opj_image_data_free(g);
+    opj_image_data_free(b);
 }/* sycc420_to_rgb() */
 
 void color_sycc_to_rgb(opj_image_t *img)
@@ -574,8 +574,8 @@ void color_apply_icc_profile(opj_image_t *image)
 
             max = max_w * max_h;
             nr_samples = (size_t)(max * 3U * sizeof(unsigned char));
-            in = inbuf = (unsigned char*)malloc(nr_samples);
-            out = outbuf = (unsigned char*)malloc(nr_samples);
+            in = inbuf = (unsigned char*)opj_image_data_alloc(nr_samples);
+            out = outbuf = (unsigned char*)opj_image_data_alloc(nr_samples);
 
             if (inbuf == NULL || outbuf == NULL) {
                 goto fails0;
@@ -605,15 +605,15 @@ void color_apply_icc_profile(opj_image_t *image)
             ok = 1;
 
 fails0:
-            free(inbuf);
-            free(outbuf);
+            opj_image_data_free(inbuf);
+            opj_image_data_free(outbuf);
         } else { /* prec > 8 */
             unsigned short *inbuf, *outbuf, *in, *out;
 
             max = max_w * max_h;
             nr_samples = (size_t)(max * 3U * sizeof(unsigned short));
-            in = inbuf = (unsigned short*)malloc(nr_samples);
-            out = outbuf = (unsigned short*)malloc(nr_samples);
+            in = inbuf = (unsigned short*)opj_image_data_alloc(nr_samples);
+            out = outbuf = (unsigned short*)opj_image_data_alloc(nr_samples);
 
             if (inbuf == NULL || outbuf == NULL) {
                 goto fails1;
@@ -643,8 +643,8 @@ fails0:
             ok = 1;
 
 fails1:
-            free(inbuf);
-            free(outbuf);
+            opj_image_data_free(inbuf);
+            opj_image_data_free(outbuf);
         }
     } else { /* image->numcomps <= 2 : GRAY, GRAYA */
         if (prec <= 8) {
@@ -653,8 +653,8 @@ fails1:
 
             max = max_w * max_h;
             nr_samples = (size_t)(max * 3 * sizeof(unsigned char));
-            in = inbuf = (unsigned char*)malloc(nr_samples);
-            out = outbuf = (unsigned char*)malloc(nr_samples);
+            in = inbuf = (unsigned char*)opj_image_data_alloc(nr_samples);
+            out = outbuf = (unsigned char*)opj_image_data_alloc(nr_samples);
             g = (int*)calloc((size_t)max, sizeof(int));
             b = (int*)calloc((size_t)max, sizeof(int));
 
@@ -703,18 +703,18 @@ fails1:
             ok = 1;
 
 fails2:
-            free(inbuf);
-            free(outbuf);
-            free(g);
-            free(b);
+            opj_image_data_free(inbuf);
+            opj_image_data_free(outbuf);
+            opj_image_data_free(g);
+            opj_image_data_free(b);
         } else { /* prec > 8 */
             unsigned short *in, *inbuf, *out, *outbuf;
             opj_image_comp_t *new_comps;
 
             max = max_w * max_h;
             nr_samples = (size_t)(max * 3U * sizeof(unsigned short));
-            in = inbuf = (unsigned short*)malloc(nr_samples);
-            out = outbuf = (unsigned short*)malloc(nr_samples);
+            in = inbuf = (unsigned short*)opj_image_data_alloc(nr_samples);
+            out = outbuf = (unsigned short*)opj_image_data_alloc(nr_samples);
             g = (int*)calloc((size_t)max, sizeof(int));
             b = (int*)calloc((size_t)max, sizeof(int));
 
@@ -763,10 +763,10 @@ fails2:
             ok = 1;
 
 fails3:
-            free(inbuf);
-            free(outbuf);
-            free(g);
-            free(b);
+            opj_image_data_free(inbuf);
+            opj_image_data_free(outbuf);
+            opj_image_data_free(g);
+            opj_image_data_free(b);
         }
     }/* if(image->numcomps > 2) */
 
@@ -881,9 +881,9 @@ void color_cielab_to_rgb(opj_image_t *image)
 
         max = image->comps[0].w * image->comps[0].h;
 
-        red = dst0 = (int*)malloc(max * sizeof(int));
-        green = dst1 = (int*)malloc(max * sizeof(int));
-        blue = dst2 = (int*)malloc(max * sizeof(int));
+        red = dst0 = (int*)opj_image_data_alloc(max * sizeof(int));
+        green = dst1 = (int*)opj_image_data_alloc(max * sizeof(int));
+        blue = dst2 = (int*)opj_image_data_alloc(max * sizeof(int));
 
         if (red == NULL || green == NULL || blue == NULL) {
             goto fails;
@@ -917,11 +917,11 @@ void color_cielab_to_rgb(opj_image_t *image)
         cmsCloseProfile(in);
         cmsCloseProfile(out);
 #endif
-        free(src0);
+        opj_image_data_free(src0);
         image->comps[0].data = dst0;
-        free(src1);
+        opj_image_data_free(src1);
         image->comps[1].data = dst1;
-        free(src2);
+        opj_image_data_free(src2);
         image->comps[2].data = dst2;
 
         image->color_space = new_space;
@@ -938,13 +938,13 @@ fails:
         cmsCloseProfile(out);
 #endif
         if (red) {
-            free(red);
+            opj_image_data_free(red);
         }
         if (green) {
-            free(green);
+            opj_image_data_free(green);
         }
         if (blue) {
-            free(blue);
+            opj_image_data_free(blue);
         }
         return;
     }
@@ -1004,7 +1004,7 @@ void color_cmyk_to_rgb(opj_image_t *image)
         image->comps[2].data[i] = (int)(255.0F * Y * K); /* B */
     }
 
-    free(image->comps[3].data);
+    opj_image_data_free(image->comps[3].data);
     image->comps[3].data = NULL;
     image->comps[0].prec = 8;
     image->comps[1].prec = 8;