fprintf(stdout,"\n");
fprintf(stdout," -b \t REQUIRED \t filename to the reference/baseline PGX/TIF/PNM image \n");
fprintf(stdout," -t \t REQUIRED \t filename to the test PGX/TIF/PNM image\n");
- fprintf(stdout," -n \t REQUIRED \t number of component of the image (used to generate correct filename)\n");
+ fprintf(stdout," -n \t REQUIRED \t number of component of the image (used to generate correct filename, not used when both input files are TIF)\n");
fprintf(stdout," -m \t OPTIONAL \t list of MSE tolerances, separated by : (size must correspond to the number of component) of \n");
fprintf(stdout," -p \t OPTIONAL \t list of PEAK tolerances, separated by : (size must correspond to the number of component) \n");
fprintf(stdout," -s \t OPTIONAL \t 1 or 2 filename separator to take into account PGX/PNM image with different components, "
char s[255];
char *outFilename, *ptr;
const char token = '.';
- int posToken = 0;
+ size_t posToken = 0;
int decod_format;
/*printf("inFilename = %s\n", inFilename);*/
if ((ptr = strrchr(inFilename, token)) != NULL)
{
- posToken = (int) (strlen(inFilename) - strlen(ptr));
+ posToken = strlen(inFilename) - strlen(ptr);
/*printf("Position of %c character inside inFilename = %d\n", token, posToken);*/
}
else
return outFilename;
}
- outFilename = (char*)malloc((size_t)(posToken + 7) * sizeof(char)); /*6*/
-
- strncpy(outFilename, inFilename, (size_t)posToken);
+ outFilename = (char*)malloc((posToken + 7) * sizeof(char)); /*6*/
+ strncpy(outFilename, inFilename, posToken);
outFilename[posToken] = '\0';
-
strcat(outFilename, separator);
-
sprintf(s, "%i", indexF);
strcat(outFilename, s);
if (!image_read)
{
int it_free_data;
- fprintf(stderr, "Unable to load pgx file\n");
+ fprintf(stderr, "Unable to load ppm file: %s\n", filenameComponentPGX);
free(param_image_read);
static opj_image_t* readImageFromFileTIF(const char* filename, int nbFilenamePGX, const char *separator)
{
- int it_file;
opj_image_t* image_read = NULL;
- opj_image_t* image = NULL;
opj_cparameters_t parameters;
- opj_image_cmptparm_t* param_image_read;
- int** data;
+ (void)nbFilenamePGX;
+ (void)separator;
/* conformance test suite produce annoying warning/error:
* TIFFReadDirectory: Warning, /.../data/baseline/conformance/jp2_1.tif: unknown field with tag 37724 (0x935c) encountered.
TIFFSetErrorHandler(NULL);
#endif
- /* If separator is empty => nb file to read is equal to one*/
- if ( strlen(separator) == 0 )
- nbFilenamePGX = 1;
+ if ( strlen(separator) != 0 ) return NULL;
/* set encoding parameters to default values */
opj_set_default_encoder_parameters(¶meters);
parameters.decod_format = TIF_DFMT;
strcpy(parameters.infile, filename);
- /* Allocate memory*/
- param_image_read = malloc((size_t)nbFilenamePGX * sizeof(opj_image_cmptparm_t));
- data = malloc((size_t)nbFilenamePGX * sizeof(*data));
-
- for (it_file = 0; it_file < nbFilenamePGX; it_file++)
- {
- /* Create the right filename*/
- char *filenameComponentPGX;
- if (strlen(separator) == 0)
- {
- filenameComponentPGX = malloc((strlen(filename) + 1) * sizeof(*filenameComponentPGX));
- strcpy(filenameComponentPGX, filename);
- }
- else
- filenameComponentPGX = createMultiComponentsFilename(filename, it_file, separator);
-
- /* Read the tif file corresponding to the component */
+ /* Read the tif file corresponding to the component */
#ifdef OPJ_HAVE_LIBTIFF
- image_read = tiftoimage(filenameComponentPGX, ¶meters);
+ image_read = tiftoimage(filename, ¶meters);
#endif
- if (!image_read)
- {
- int it_free_data;
- fprintf(stderr, "Unable to load TIF 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;
- param_image_read[it_file].y0 = 0;
- param_image_read[it_file].dx = 0;
- param_image_read[it_file].dy = 0;
- param_image_read[it_file].h = image_read->comps->h;
- param_image_read[it_file].w = image_read->comps->w;
- param_image_read[it_file].bpp = image_read->comps->bpp;
- param_image_read[it_file].prec = image_read->comps->prec;
- param_image_read[it_file].sgnd = image_read->comps->sgnd;
-
- /* Copy data*/
- data[it_file] = malloc(param_image_read[it_file].h * param_image_read[it_file].w * sizeof(int));
- memcpy(data[it_file], image_read->comps->data, image_read->comps->h * image_read->comps->w * sizeof(int));
-
- /* Free memory*/
- opj_image_destroy(image_read);
- free(filenameComponentPGX);
- }
-
- image = opj_image_create((OPJ_UINT32)nbFilenamePGX, param_image_read, OPJ_CLRSPC_UNSPECIFIED);
- for (it_file = 0; it_file < nbFilenamePGX; it_file++)
+ if (!image_read)
{
- /* Copy data into output image and free memory*/
- memcpy(image->comps[it_file].data, data[it_file], image->comps[it_file].h * image->comps[it_file].w * sizeof(int));
- free(data[it_file]);
+ fprintf(stderr, "Unable to load TIF file\n");
+ return NULL;
}
- /* Free memory*/
- free(param_image_read);
- free(data);
-
- return image;
+ return image_read;
}
static opj_image_t* readImageFromFilePGX(const char* filename, int nbFilenamePGX, const char *separator)
{
char *MSElistvalues = NULL; char *PEAKlistvalues= NULL;
char *separatorList = NULL;
- int sizemembasefile, sizememtestfile;
+ size_t sizemembasefile, sizememtestfile;
int index, flagM=0, flagP=0;
const char optlist[] = "b:t:n:m:p:s:d";
int c;
switch (c)
{
case 'b':
- sizemembasefile = (int)strlen(opj_optarg)+1;
- param->base_filename = (char*) malloc((size_t)sizemembasefile);
- param->base_filename[0] = '\0';
- strncpy(param->base_filename, opj_optarg, strlen(opj_optarg));
- param->base_filename[strlen(opj_optarg)] = '\0';
+ sizemembasefile = strlen(opj_optarg) + 1;
+ param->base_filename = (char*) malloc(sizemembasefile);
+ strcpy(param->base_filename, opj_optarg);
/*printf("param->base_filename = %s [%d / %d]\n", param->base_filename, strlen(param->base_filename), sizemembasefile );*/
break;
case 't':
- sizememtestfile = (int) strlen(opj_optarg) + 1;
- param->test_filename = (char*) malloc((size_t)sizememtestfile);
- param->test_filename[0] = '\0';
- strncpy(param->test_filename, opj_optarg, strlen(opj_optarg));
- param->test_filename[strlen(opj_optarg)] = '\0';
+ sizememtestfile = strlen(opj_optarg) + 1;
+ param->test_filename = (char*) malloc(sizememtestfile);
+ strcpy(param->test_filename, opj_optarg);
/*printf("param->test_filename = %s [%d / %d]\n", param->test_filename, strlen(param->test_filename), sizememtestfile);*/
break;
case 'n':
if( (strlen(separatorList) ==2) || (strlen(separatorList) ==4) )
{
/* keep original string*/
- int sizeseplist = (int)strlen(separatorList)+1;
- char* separatorList2 = (char*)malloc( (size_t)sizeseplist );
- separatorList2[0] = '\0';
- strncpy(separatorList2, separatorList, strlen(separatorList));
- separatorList2[strlen(separatorList)] = '\0';
+ size_t sizeseplist = strlen(separatorList)+1;
+ char* separatorList2 = (char*)malloc( sizeseplist );
+ strcpy(separatorList2, separatorList);
/*printf("separatorList2 = %s [%d / %d]\n", separatorList2, strlen(separatorList2), sizeseplist);*/
if (strlen(separatorList) == 2) /* one separator behind b or t*/
int failed = 1;
int nbFilenamePGXbase = 0, nbFilenamePGXtest = 0;
char *filenamePNGtest= NULL, *filenamePNGbase = NULL, *filenamePNGdiff = NULL;
- int memsizebasefilename, memsizetestfilename;
+ size_t memsizebasefilename, memsizetestfilename;
size_t memsizedifffilename;
int valueDiff = 0, nbPixelDiff = 0;
double sumDiff = 0.0;
printf("************************* \n");
/*----------BASELINE IMAGE--------*/
- memsizebasefilename = (int)strlen(inParam.test_filename) + 1 + 5 + 2 + 4;
- memsizetestfilename = (int)strlen(inParam.test_filename) + 1 + 5 + 2 + 4;
+ memsizebasefilename = strlen(inParam.test_filename) + 1 + 5 + 2 + 4;
+ memsizetestfilename = strlen(inParam.test_filename) + 1 + 5 + 2 + 4;
decod_format = get_decod_format(&inParam);
if( decod_format == -1 )
goto cleanup;
}
- filenamePNGbase = (char*) malloc((size_t)memsizebasefilename);
+ filenamePNGbase = (char*) malloc(memsizebasefilename);
strcpy(filenamePNGbase, inParam.test_filename);
strcat(filenamePNGbase, ".base");
/*printf("filenamePNGbase = %s [%d / %d octets]\n",filenamePNGbase, strlen(filenamePNGbase),memsizebasefilename );*/
goto cleanup;
}
- filenamePNGtest = (char*) malloc((size_t)memsizetestfilename);
+ filenamePNGtest = (char*) malloc(memsizetestfilename);
strcpy(filenamePNGtest, inParam.test_filename);
strcat(filenamePNGtest, ".test");
/*printf("filenamePNGtest = %s [%d / %d octets]\n",filenamePNGtest, strlen(filenamePNGtest),memsizetestfilename );*/
/* Comparison of header parameters*/
printf("Step 1 -> Header comparison\n");
+ /* check dimensions (issue 286)*/
+ if(imageBase->numcomps != imageTest->numcomps )
+ {
+ printf("ERROR: dim mismatch (%d><%d)\n", imageBase->numcomps, imageTest->numcomps);
+ goto cleanup;
+ }
+
for (it_comp = 0; it_comp < imageBase->numcomps; it_comp++)
{
param_image_diff[it_comp].x0 = 0;
printf("<DartMeasurement name=\"NumberOfPixelsWithDifferences_%d\" type=\"numeric/int\"> %d </DartMeasurement> \n", it_comp, nbPixelDiff);
printf("<DartMeasurement name=\"ComponentError_%d\" type=\"numeric/double\"> %f </DartMeasurement> \n", it_comp, sumDiff);
+ printf("<DartMeasurement name=\"PEAK_%d\" type=\"numeric/double\"> %f </DartMeasurement> \n", it_comp, PEAK);
+ printf("<DartMeasurement name=\"MSE_%d\" type=\"numeric/double\"> %f </DartMeasurement> \n", it_comp, MSE);
#ifdef OPJ_HAVE_LIBPNG
{
char *filenamePNGbase_it_comp, *filenamePNGtest_it_comp, *filenamePNGdiff_it_comp;
- filenamePNGbase_it_comp = (char*) malloc((size_t)memsizebasefilename);
+ filenamePNGbase_it_comp = (char*) malloc(memsizebasefilename);
strcpy(filenamePNGbase_it_comp,filenamePNGbase);
- filenamePNGtest_it_comp = (char*) malloc((size_t)memsizetestfilename);
+ filenamePNGtest_it_comp = (char*) malloc(memsizetestfilename);
strcpy(filenamePNGtest_it_comp,filenamePNGtest);
filenamePNGdiff_it_comp = (char*) malloc(memsizedifffilename);