Fixed raw option to encode raw images with more than three components.
authorFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Wed, 18 Jul 2007 09:45:59 +0000 (09:45 +0000)
committerFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Wed, 18 Jul 2007 09:45:59 +0000 (09:45 +0000)
ChangeLog
codec/convert.c
codec/image_to_j2k.c

index ca281130b2257a393b7f6f09db0b283e16402bf0..974fc7053e237f815b5a64f7de60e19ae1bd85aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,9 @@ What's New for OpenJPEG
 ! : changed
 + : added
 
+July 17, 2007
+* [FOD] Fixed raw option for images with more than three components
+
 July 17, 2007
 + [FOD] Added support for RAW images. This module has been developped by the University of Perugia team. Thanks to them ! [image_to_j2k.c j2k_to_image.c convert.c convert.h]
 
index 7ab674b98f2579b2560ce31c48899d18be27a946..1dc2ca66547ec5458be6f95d791b9149fba9de1b 100644 (file)
@@ -1451,7 +1451,7 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
        FILE *f = NULL;
        int i, compno, numcomps, w, h;
        OPJ_COLOR_SPACE color_space;
-       opj_image_cmptparm_t cmptparm[3];       /* maximum of 3 components */
+       opj_image_cmptparm_t *cmptparm; 
        opj_image_t * image = NULL;
        unsigned short ch;
        
@@ -1459,8 +1459,8 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
        {
                fprintf(stderr,"\nError: invalid raw image parameters\n");
                fprintf(stderr,"Please use the Format option -F:\n");
-               fprintf(stderr,"-F rawWidth x rawHeight x rawComp x rawBitDepth+s/u (Signed/Unsigned)\n");
-               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512x512x3x8xu\n");
+               fprintf(stderr,"-F rawWidth,rawHeight,rawComp,rawBitDepth,s/u (Signed/Unsigned)\n");
+               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512,512,3,8,u\n");
                fprintf(stderr,"Aborting\n");
                return NULL;
        }
@@ -1475,11 +1475,11 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
        color_space = CLRSPC_SRGB;
        w = raw_cp->rawWidth;
        h = raw_cp->rawHeight;
-
+       cmptparm = (opj_image_cmptparm_t*) malloc(numcomps * sizeof(opj_image_cmptparm_t));
        
-       /* initialize image components */
+       /* initialize image components */       
        memset(&cmptparm[0], 0, numcomps * sizeof(opj_image_cmptparm_t));
-       for(i = 0; i < numcomps; i++) {
+       for(i = 0; i < numcomps; i++) {         
                cmptparm[i].prec = raw_cp->rawBitDepth;
                cmptparm[i].bpp = raw_cp->rawBitDepth;
                cmptparm[i].sgnd = raw_cp->rawSigned;
index e3899593db3a9cfafcdf76528e7fc19c65c1f5c4..2e1468539204e220fa2438bf9697edad46873236 100644 (file)
@@ -660,28 +660,28 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
                        {
                                char signo;
                                char *s = optarg;
-                               if (sscanf(s, "%dx%dx%dx%dx%c", &raw_cp->rawWidth, &raw_cp->rawHeight, &raw_cp->rawComp, &raw_cp->rawBitDepth, &signo) == 5) {
+                               if (sscanf(s, "%d,%d,%d,%d,%c", &raw_cp->rawWidth, &raw_cp->rawHeight, &raw_cp->rawComp, &raw_cp->rawBitDepth, &signo) == 5) {
                                        if (signo == 's') {
                                                raw_cp->rawSigned = true;
-                                               fprintf(stdout,"\nRaw file parameters: %dx%dx%dx%d Signed\n", raw_cp->rawWidth, raw_cp->rawHeight, raw_cp->rawComp, raw_cp->rawBitDepth);
+                                               fprintf(stdout,"\nRaw file parameters: %d,%d,%d,%d Signed\n", raw_cp->rawWidth, raw_cp->rawHeight, raw_cp->rawComp, raw_cp->rawBitDepth);
                                        }
                                        else if (signo == 'u') {
                                                raw_cp->rawSigned = false;
-                                               fprintf(stdout,"\nRaw file parameters: %dx%dx%dx%d Unsigned\n", raw_cp->rawWidth, raw_cp->rawHeight, raw_cp->rawComp, raw_cp->rawBitDepth);
+                                               fprintf(stdout,"\nRaw file parameters: %d,%d,%d,%d Unsigned\n", raw_cp->rawWidth, raw_cp->rawHeight, raw_cp->rawComp, raw_cp->rawBitDepth);
                                        }
                                        else {
                                                fprintf(stderr,"\nError: invalid raw image parameters: Unknown sign of raw file\n");
                                                fprintf(stderr,"Please use the Format option -F:\n");
-                                               fprintf(stderr,"-F rawWidth x rawHeight x rawComp x rawBitDepth+s/u (Signed/Unsigned)\n");
-                                               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512x512x3x8xu\n");
+                                               fprintf(stderr,"-F rawWidth,rawHeight,rawComp,rawBitDepth,s/u (Signed/Unsigned)\n");
+                                               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512,512,3,8,u\n");
                                                fprintf(stderr,"Aborting\n");
                                        }                                       
                                }
                                else {
                                        fprintf(stderr,"\nError: invalid raw image parameters\n");
                                        fprintf(stderr,"Please use the Format option -F:\n");
-                                       fprintf(stderr,"-F rawWidth x rawHeight x rawComp x rawBitDepth+s/u (Signed/Unsigned)\n");
-                                       fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512x512x3x8xu\n");
+                                       fprintf(stderr,"-F rawWidth,rawHeight,rawComp,rawBitDepth,s/u (Signed/Unsigned)\n");
+                                               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512,512,3,8,u\n");
                                        fprintf(stderr,"Aborting\n");
                                        return 1;
                                }
@@ -1385,8 +1385,8 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
        if (parameters->decod_format == RAW_DFMT && raw_cp->rawWidth == 0) {
                        fprintf(stderr,"\nError: invalid raw image parameters\n");
                        fprintf(stderr,"Please use the Format option -F:\n");
-                       fprintf(stderr,"-F rawWidth x rawHeight x rawComp x rawBitDepth+s/u (Signed/Unsigned)\n");
-                       fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512x512x3x8xu\n");
+                       fprintf(stderr,"-F rawWidth,rawHeight,rawComp,rawBitDepth,s/u (Signed/Unsigned)\n");
+                                               fprintf(stderr,"Example: -i lena.raw -o lena.j2k -F 512,512,3,8,u\n");
                        fprintf(stderr,"Aborting\n");
                        return 1;
        }