Merge branch 'master' into coc-qcc
This commit is contained in:
		
							
								
								
									
										24
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -6,14 +6,24 @@ before_install: | |||||||
|   - cmake --version |   - cmake --version | ||||||
|   - git clone --depth=1 --branch=master git://github.com/uclouvain/openjpeg-data.git data |   - git clone --depth=1 --branch=master git://github.com/uclouvain/openjpeg-data.git data | ||||||
|   - wget -qO - https://github.com/openpreserve/jpylyzer/archive/1.14.2.tar.gz | tar -xvz |   - wget -qO - https://github.com/openpreserve/jpylyzer/archive/1.14.2.tar.gz | tar -xvz | ||||||
|  | # When OPJ_NONCOMMERCIAL=1, kakadu trial binaries are used for testing. Here's the copyright notice from kakadu: | ||||||
|  | # Copyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney. | ||||||
|  | # You are free to trial these executables and even to re-distribute them,  | ||||||
|  | # so long as such use or re-distribution is accompanied with this copyright notice and is not for commercial gain. | ||||||
|  | # Note: Binaries can only be used for non-commercial purposes. | ||||||
|  |   - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then wget -q http://kakadusoftware.com/wp-content/uploads/2014/06/KDU77_Demo_Apps_for_Linux-x86-64_150710.zip; fi | ||||||
| install: | install: | ||||||
|   - chmod +x jpylyzer-1.14.2/jpylyzer/jpylyzer.py |   - chmod +x jpylyzer-1.14.2/jpylyzer/jpylyzer.py | ||||||
|  |   - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then cmake -E tar -xf KDU77_Demo_Apps_for_Linux-x86-64_150710.zip; fi | ||||||
|  |   - export LD_LIBRARY_PATH=${PWD}/KDU77_Demo_Apps_for_Linux-x86-64_150710:${LD_LIBRARY_PATH} | ||||||
|  |   - export PATH=${PWD}/KDU77_Demo_Apps_for_Linux-x86-64_150710:${PATH} | ||||||
|  |  | ||||||
| script: | script: | ||||||
|     - mkdir build |   - if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then echo -e "\nTesting will use Kakadu trial binaries. Here's the copyright notice from kakadu:\nCopyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney.\nYou are free to trial these executables and even to re-distribute them,\nso long as such use or re-distribution is accompanied with this copyright notice and is not for commercial gain.\nNote:\ Binaries can only be used for non-commercial purposes.\n"; fi | ||||||
|     - cd build |   - mkdir build | ||||||
|     - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_CODEC=ON -DBUILD_THIRDPARTY=ON -DBUILD_TESTING=ON -DOPJ_DATA_ROOT=${PWD}/../data -DJPYLYZER_EXECUTABLE=${PWD}/../jpylyzer-1.14.2/jpylyzer/jpylyzer.py -DSITE=travis-ci.org -DBUILDNAME=${TRAVIS_OS_NAME}-${CC}$(${CC} -dumpversion)-x86_64-${TRAVIS_BRANCH}$( [[ "${TRAVIS_PULL_REQUEST}" != "false" ]] && echo "-pr${TRAVIS_PULL_REQUEST}" )-Release-3rdP .. |   - cd build | ||||||
|     - ctest -D ExperimentalStart |   - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_CODEC=ON -DBUILD_THIRDPARTY=ON -DBUILD_TESTING=ON -DOPJ_DATA_ROOT=${PWD}/../data -DJPYLYZER_EXECUTABLE=${PWD}/../jpylyzer-1.14.2/jpylyzer/jpylyzer.py -DSITE=travis-ci.org -DBUILDNAME=${TRAVIS_OS_NAME}-${CC}$(${CC} -dumpversion)-x86_64-${TRAVIS_BRANCH}$( [[ "${TRAVIS_PULL_REQUEST}" != "false" ]] && echo "-pr${TRAVIS_PULL_REQUEST}" )-Release-3rdP .. | ||||||
|     - ctest -D ExperimentalBuild -V |   - ctest -D ExperimentalStart | ||||||
|     - ctest -D ExperimentalTest -j2 || true |   - ctest -D ExperimentalBuild -V | ||||||
|     - ctest -D ExperimentalSubmit || true |   - ctest -D ExperimentalTest -j2 || true | ||||||
|  |   - ctest -D ExperimentalSubmit || true | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
| .SP | .SP | ||||||
| .fi | .fi | ||||||
| .. | .. | ||||||
| .TH opj_compress 1 "Version 1.4.0" "opj_compress" "converts to jpeg2000 files" | .TH opj_compress 1 "Version 2.1.1" "opj_compress" "converts to jpeg2000 files" | ||||||
| .P | .P | ||||||
| .SH NAME | .SH NAME | ||||||
| opj_compress -  | opj_compress -  | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
| .SP | .SP | ||||||
| .fi | .fi | ||||||
| .. | .. | ||||||
| .TH opj_decompress 1 "Version 1.4.0" "opj_decompress" "converts jpeg2000 files" | .TH opj_decompress 1 "Version 2.1.1" "opj_decompress" "converts jpeg2000 files" | ||||||
| .P | .P | ||||||
| .SH NAME | .SH NAME | ||||||
| opj_decompress -  | opj_decompress -  | ||||||
| @@ -73,9 +73,19 @@ n is the maximum number of quality layers to decode. See LAYERS below) | |||||||
| .B \-\^OutFor "ext" | .B \-\^OutFor "ext" | ||||||
| (extension for output files) | (extension for output files) | ||||||
| .P | .P | ||||||
|  | .SH JPIP OPTIONS | ||||||
|  | Options usable only if the library has been compiled with | ||||||
|  | .B BUILD_JPIP | ||||||
|  | .TP | ||||||
|  | .B -jpip | ||||||
|  | Embed index table box into the output JP2 file (compulsory for JPIP) | ||||||
|  | .TP | ||||||
|  | .B -TP R | ||||||
|  | Partition a tile into tile parts of different resolution levels (compulsory for JPT-stream) | ||||||
|  | .P | ||||||
| .SH JPWL OPTIONS | .SH JPWL OPTIONS | ||||||
| Options usable only if the library has been compiled with | Options usable only if the library has been compiled with | ||||||
| .B -DUSE_JPWL | .B BUILD_JPWL | ||||||
| .TP | .TP | ||||||
| .B -W c\fR[=Nc] (Nc is the  number of expected components in the codestream; default:3) | .B -W c\fR[=Nc] (Nc is the  number of expected components in the codestream; default:3) | ||||||
| .TP | .TP | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
| .SP | .SP | ||||||
| .fi | .fi | ||||||
| .. | .. | ||||||
| .TH opj_dump 1 "Version 1.4.0" "opj_dump" "dumps jpeg2000 files" | .TH opj_dump 1 "Version 2.1.1" "opj_dump" "dumps jpeg2000 files" | ||||||
| .P | .P | ||||||
| .SH NAME | .SH NAME | ||||||
| opj_dump -  | opj_dump -  | ||||||
|   | |||||||
| @@ -562,7 +562,7 @@ fprintf(stderr,"%s:%d:color_apply_icc_profile\n\tcmsCreateTransform failed. " | |||||||
| #endif | #endif | ||||||
| }/* color_apply_icc_profile() */ | }/* color_apply_icc_profile() */ | ||||||
|  |  | ||||||
| void color_apply_conversion(opj_image_t *image) | void color_cielab_to_rgb(opj_image_t *image) | ||||||
| { | { | ||||||
| 	int *row; | 	int *row; | ||||||
| 	int enumcs, numcomps; | 	int enumcs, numcomps; | ||||||
| @@ -581,7 +581,7 @@ void color_apply_conversion(opj_image_t *image) | |||||||
| 	row = (int*)image->icc_profile_buf; | 	row = (int*)image->icc_profile_buf; | ||||||
| 	enumcs = row[0]; | 	enumcs = row[0]; | ||||||
| 	 | 	 | ||||||
| 	if(enumcs == 14)// CIELab | 	if(enumcs == 14) /* CIELab */ | ||||||
| 	{ | 	{ | ||||||
| 		int *L, *a, *b, *red, *green, *blue; | 		int *L, *a, *b, *red, *green, *blue; | ||||||
| 		int *src0, *src1, *src2, *dst0, *dst1, *dst2; | 		int *src0, *src1, *src2, *dst0, *dst1, *dst2; | ||||||
| @@ -599,13 +599,13 @@ void color_apply_conversion(opj_image_t *image) | |||||||
| 		 | 		 | ||||||
| 		transform = cmsCreateTransform(in, TYPE_Lab_DBL, out, TYPE_RGB_16, INTENT_PERCEPTUAL, 0); | 		transform = cmsCreateTransform(in, TYPE_Lab_DBL, out, TYPE_RGB_16, INTENT_PERCEPTUAL, 0); | ||||||
| 		 | 		 | ||||||
| #ifdef HAVE_LIBLCMS2 | #ifdef OPJ_HAVE_LIBLCMS2 | ||||||
| 		cmsCloseProfile(in); | 		cmsCloseProfile(in); | ||||||
| 		cmsCloseProfile(out); | 		cmsCloseProfile(out); | ||||||
| #endif | #endif | ||||||
| 		if(transform == NULL) | 		if(transform == NULL) | ||||||
| 		{ | 		{ | ||||||
| #ifdef HAVE_LIBLCMS1 | #ifdef OPJ_HAVE_LIBLCMS1 | ||||||
| 			cmsCloseProfile(in); | 			cmsCloseProfile(in); | ||||||
| 			cmsCloseProfile(out); | 			cmsCloseProfile(out); | ||||||
| #endif | #endif | ||||||
| @@ -662,7 +662,7 @@ void color_apply_conversion(opj_image_t *image) | |||||||
| 			*blue++ = RGB[2]; | 			*blue++ = RGB[2]; | ||||||
| 		} | 		} | ||||||
| 		cmsDeleteTransform(transform); | 		cmsDeleteTransform(transform); | ||||||
| #ifdef HAVE_LIBLCMS1 | #ifdef OPJ_HAVE_LIBLCMS1 | ||||||
| 		cmsCloseProfile(in); | 		cmsCloseProfile(in); | ||||||
| 		cmsCloseProfile(out); | 		cmsCloseProfile(out); | ||||||
| #endif | #endif | ||||||
| @@ -681,7 +681,7 @@ void color_apply_conversion(opj_image_t *image) | |||||||
| 	fprintf(stderr,"%s:%d:\n\tenumCS %d not handled. Ignoring.\n", __FILE__,__LINE__, enumcs); | 	fprintf(stderr,"%s:%d:\n\tenumCS %d not handled. Ignoring.\n", __FILE__,__LINE__, enumcs); | ||||||
| }// color_apply_conversion() | }// color_apply_conversion() | ||||||
|  |  | ||||||
| #endif // HAVE_LIBLCMS2 || HAVE_LIBLCMS1 | #endif // OPJ_HAVE_LIBLCMS2 || OPJ_HAVE_LIBLCMS1 | ||||||
|  |  | ||||||
| void color_cmyk_to_rgb(opj_image_t *image) | void color_cmyk_to_rgb(opj_image_t *image) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ | |||||||
|  |  | ||||||
| extern void color_sycc_to_rgb(opj_image_t *img); | extern void color_sycc_to_rgb(opj_image_t *img); | ||||||
| extern void color_apply_icc_profile(opj_image_t *image); | extern void color_apply_icc_profile(opj_image_t *image); | ||||||
| extern void color_apply_conversion(opj_image_t *image); | extern void color_cielab_to_rgb(opj_image_t *image); | ||||||
|  |  | ||||||
| extern void color_cmyk_to_rgb(opj_image_t *image); | extern void color_cmyk_to_rgb(opj_image_t *image); | ||||||
| extern void color_esycc_to_rgb(opj_image_t *image); | extern void color_esycc_to_rgb(opj_image_t *image); | ||||||
|   | |||||||
| @@ -1371,7 +1371,7 @@ int main(int argc, char **argv) | |||||||
| 			if(image->icc_profile_len) | 			if(image->icc_profile_len) | ||||||
| 			 color_apply_icc_profile(image); | 			 color_apply_icc_profile(image); | ||||||
| 			else | 			else | ||||||
| 			 color_apply_conversion(image); | 			 color_cielab_to_rgb(image); | ||||||
| #endif | #endif | ||||||
| 			free(image->icc_profile_buf); | 			free(image->icc_profile_buf); | ||||||
| 			image->icc_profile_buf = NULL; image->icc_profile_len = 0; | 			image->icc_profile_buf = NULL; image->icc_profile_len = 0; | ||||||
|   | |||||||
| @@ -268,7 +268,7 @@ void opj_tcd_makelayer( opj_tcd_t *tcd, | |||||||
|                                                                         n = passno + 1; |                                                                         n = passno + 1; | ||||||
|                                                                 continue; |                                                                 continue; | ||||||
|                                                         } |                                                         } | ||||||
|                                                         if (dd / dr >= thresh) |                                                         if (thresh - (dd / dr) < DBL_EPSILON) /* do not rely on float equality, check with DBL_EPSILON margin */ | ||||||
|                                                                 n = passno + 1; |                                                                 n = passno + 1; | ||||||
|                                                 } |                                                 } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -85,7 +85,7 @@ static void compare_images_help_display(void) | |||||||
|   fprintf(stdout,"\n"); |   fprintf(stdout,"\n"); | ||||||
|   fprintf(stdout,"  -b \t REQUIRED \t filename to the reference/baseline PGX/TIF/PNM image \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,"  -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,"  -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,"  -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, " |   fprintf(stdout,"  -s \t OPTIONAL \t 1 or 2 filename separator to take into account PGX/PNM image with different components, " | ||||||
| @@ -279,8 +279,6 @@ static opj_image_t* readImageFromFileTIF(const char* filename, int nbFilenamePGX | |||||||
|     return NULL; |     return NULL; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   /* \postconditions */ |  | ||||||
|   assert( image_read->numcomps == 1 || image_read->numcomps == 3 ); |  | ||||||
|   return image_read; |   return image_read; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -353,6 +353,26 @@ foreach(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST}) | |||||||
|                 )		 |                 )		 | ||||||
|             endif() |             endif() | ||||||
|           endif(JPYLYZER_EXECUTABLE) |           endif(JPYLYZER_EXECUTABLE) | ||||||
|  |            | ||||||
|  |           # If lossless compression (simple test is 4 arguments), decompress & compare | ||||||
|  |           list(LENGTH CMD_ARG_LIST_2 ARG_COUNT) | ||||||
|  |           if (ARG_COUNT EQUAL 4) | ||||||
|  |             # can we compare with the input image ? | ||||||
|  |             if (${INPUT_FILENAME_NAME} MATCHES "\\.tif$") | ||||||
|  |               add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-lossless-decode | ||||||
|  |                 COMMAND opj_decompress -i ${OUTPUT_FILENAME} -o ${OUTPUT_FILENAME}.lossless.tif | ||||||
|  |                 ) | ||||||
|  |               set_tests_properties(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-lossless-decode PROPERTIES  | ||||||
|  |                 DEPENDS NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode | ||||||
|  |                 ) | ||||||
|  |               add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-lossless-compare | ||||||
|  |                 COMMAND compare_images -b ${INPUT_FILENAME} -t ${OUTPUT_FILENAME}.lossless.tif -n 1 -d | ||||||
|  |                 ) | ||||||
|  |               set_tests_properties(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-lossless-compare PROPERTIES  | ||||||
|  |                 DEPENDS NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-lossless-decode | ||||||
|  |                 )	 | ||||||
|  |             endif() | ||||||
|  |           endif() | ||||||
|       endif() |       endif() | ||||||
|  |  | ||||||
|     # DECODER TEST SUITE |     # DECODER TEST SUITE | ||||||
|   | |||||||
| @@ -134,6 +134,9 @@ opj_compress -i @INPUT_NR_PATH@/pngsuite/ftp0n2c08.png -o @TEMP_PATH@/ftp0n2c08. | |||||||
| opj_compress -i @INPUT_NR_PATH@/pngsuite/ftp0n3p08.png -o @TEMP_PATH@/ftp0n3p08.png.jp2 | opj_compress -i @INPUT_NR_PATH@/pngsuite/ftp0n3p08.png -o @TEMP_PATH@/ftp0n3p08.png.jp2 | ||||||
| opj_compress -i @INPUT_NR_PATH@/pngsuite/ftp1n3p08.png -o @TEMP_PATH@/ftp1n3p08.png.jp2 | opj_compress -i @INPUT_NR_PATH@/pngsuite/ftp1n3p08.png -o @TEMP_PATH@/ftp1n3p08.png.jp2 | ||||||
|  |  | ||||||
|  | # issue 571 Lossless is not lossless on linux x86 | ||||||
|  | opj_compress -i @INPUT_NR_PATH@/issue571.tif -o @TEMP_PATH@/issue571.tif.j2k | ||||||
|  |  | ||||||
| # DECODER TEST SUITE | # DECODER TEST SUITE | ||||||
| opj_decompress -i  @INPUT_NR_PATH@/Bretagne2.j2k -o @TEMP_PATH@/Bretagne2.j2k.pgx | opj_decompress -i  @INPUT_NR_PATH@/Bretagne2.j2k -o @TEMP_PATH@/Bretagne2.j2k.pgx | ||||||
| opj_decompress -i  @INPUT_NR_PATH@/_00042.j2k -o @TEMP_PATH@/_00042.j2k.pgx | opj_decompress -i  @INPUT_NR_PATH@/_00042.j2k -o @TEMP_PATH@/_00042.j2k.pgx | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 mayeut
					mayeut