41#include "gtest/gtest.h"
49#ifdef OJPH_COMPILER_MSVC
50 return _popen(command, modes);
52 return popen(command, modes);
62#ifdef OJPH_COMPILER_MSVC
63 return _pclose(stream);
65 return pclose(stream);
73int execute(
const std::string& cmd, std::string& result)
75 std::array<char, 128> buffer;
80 throw std::runtime_error(
"ojph_popen() failed!");
83 if (fgets(buffer.data(), 128, pipe) !=
nullptr)
84 result += buffer.data();
87 if (rc != EXIT_SUCCESS)
97 #define SRC_FILE_DIR ".\\jp2k_test_codestreams\\openjph\\"
98 #define OUT_FILE_DIR ".\\"
99 #define REF_FILE_DIR ".\\jp2k_test_codestreams\\openjph\\references\\"
100 #define MSE_PAE_PATH ".\\Release\\mse_pae"
101 #define COMPARE_FILES_PATH ".\\Release\\compare_files"
102 #define EXPAND_EXECUTABLE "..\\..\\bin\\ojph_expand.exe"
103 #define COMPRESS_EXECUTABLE "..\\..\\bin\\ojph_compress.exe"
105 #define SRC_FILE_DIR "./jp2k_test_codestreams/openjph/"
106 #define OUT_FILE_DIR "./"
107 #define REF_FILE_DIR "./jp2k_test_codestreams/openjph/references/"
108 #define MSE_PAE_PATH "./mse_pae"
109 #define COMPARE_FILES_PATH "./compare_files"
110 #define EXPAND_EXECUTABLE "../../bin/ojph_expand"
111 #define COMPRESS_EXECUTABLE "../../bin/ojph_compress"
113#define TOL_DOUBLE 0.01
120 const std::string& base_filename,
121 const std::string& extended_base_fname,
122 const std::string& out_ext,
123 const std::string& extra_options)
126 std::string result, command;
129 +
" -o " +
OUT_FILE_DIR + base_filename + extended_base_fname +
130 "." + out_ext +
" " + extra_options;
131 std::cerr << command << std::endl;
132 EXPECT_EQ(
execute(command, result), 0);
134 catch(
const std::runtime_error&
error) {
135 FAIL() <<
error.what();
143 const std::string& src_ext,
144 const std::string& out_ext)
147 std::string result, command;
150 +
" -o " +
OUT_FILE_DIR + base_filename +
"." + out_ext;
151 EXPECT_EQ(
execute(command, result), 0);
153 catch(
const std::runtime_error&
error) {
154 FAIL() <<
error.what();
162 const std::string& out_ext,
163 const std::string& decode_ext)
166 std::string result, command;
169 +
" -o " +
OUT_FILE_DIR + base_filename +
"." + decode_ext;
170 EXPECT_EQ(
execute(command, result), 0);
172 catch(
const std::runtime_error&
error) {
173 FAIL() <<
error.what();
181 const std::string& out_ext,
182 const std::string& ref_filename,
183 const std::string& yuv_specs,
184 int num_components,
double* mse,
int* pae)
187 std::string result, command;
189 +
" " +
OUT_FILE_DIR + base_filename +
"." + out_ext + yuv_specs
191 EXPECT_EQ(
execute(command, result), 0);
194 for (
int c = 0; c < num_components; ++c) {
195 if (pos < result.length()) {
196 double valf = atof(result.c_str() + pos);
200 FAIL() <<
"mse_pae result string does not have enough entries.";
202 pos = result.find(
" ", pos);
203 if (pos != std::string::npos)
205 if (pos < result.length()) {
206 int vali = atoi(result.c_str() + pos);
210 FAIL() <<
"mse_pae result string does not have enough entries.";
212 pos = result.find(
"\n", pos);
213 if (pos != std::string::npos)
217 catch(
const std::runtime_error&
error) {
218 FAIL() <<
error.what();
226 const std::string& extended_base_fname,
227 const std::string& ext)
230 std::string result, command;
232 +
" " +
OUT_FILE_DIR + base_filename + extended_base_fname +
"." + ext
234 EXPECT_EQ(
execute(command, result), 0);
236 catch(
const std::runtime_error&
error) {
237 FAIL() <<
error.what();
247TEST(TestExecutables, OpenJPHCompressNoArguments) {
252 catch(
const std::runtime_error&
error) {
253 FAIL() <<
error.what();
259TEST(TestExecutables, OpenJPHExpandNoArguments) {
264 catch(
const std::runtime_error&
error) {
265 FAIL() <<
error.what();
277TEST(TestExecutables, SimpleDecIrv9764x64) {
278 double mse[3] = { 39.2812, 36.3819, 47.642};
279 int pae[3] = { 74, 77, 73};
281 run_mse_pae(
"simple_dec_irv97_64x64",
"ppm",
"Malamute.ppm",
289TEST(TestExecutables, SimpleDecIrv9732x32) {
290 double mse[3] = { 18.6979, 17.1208, 22.7539};
291 int pae[3] = { 51, 48, 46};
293 run_mse_pae(
"simple_dec_irv97_32x32",
"ppm",
"Malamute.ppm",
301TEST(TestExecutables, SimpleDecIrv9716x16) {
302 double mse[3] = { 20.1706, 18.5427, 24.6146};
303 int pae[3] = { 53, 51, 47};
305 run_mse_pae(
"simple_dec_irv97_16x16",
"ppm",
"Malamute.ppm",
313TEST(TestExecutables, SimpleDecIrv974x4) {
314 double mse[3] = { 40.8623, 37.9308, 49.7276};
315 int pae[3] = { 75, 77, 80};
317 run_mse_pae(
"simple_dec_irv97_4x4",
"ppm",
"Malamute.ppm",
325TEST(TestExecutables, SimpleDecIrv971024x4) {
326 double mse[3] = { 19.8275, 18.2511, 24.2832};
327 int pae[3] = { 53, 52, 50};
329 run_mse_pae(
"simple_dec_irv97_1024x4",
"ppm",
"Malamute.ppm",
337TEST(TestExecutables, SimpleDecIrv974x1024) {
338 double mse[3] = { 19.9635, 18.4063, 24.1719};
339 int pae[3] = { 51, 48, 51};
341 run_mse_pae(
"simple_dec_irv97_4x1024",
"ppm",
"Malamute.ppm",
349TEST(TestExecutables, SimpleDecIrv97512x8) {
350 double mse[3] = { 18.7929, 17.2026, 22.9922};
351 int pae[3] = { 53, 52, 50};
353 run_mse_pae(
"simple_dec_irv97_512x8",
"ppm",
"Malamute.ppm",
361TEST(TestExecutables, SimpleDecIrv978x512) {
362 double mse[3] = { 19.3661, 17.8067, 23.4574};
363 int pae[3] = { 51, 48, 52};
365 run_mse_pae(
"simple_dec_irv97_8x512",
"ppm",
"Malamute.ppm",
373TEST(TestExecutables, SimpleDecIrv97256x16) {
374 double mse[3] = { 18.6355, 17.0963, 22.6076};
375 int pae[3] = { 54, 51, 48};
377 run_mse_pae(
"simple_dec_irv97_256x16",
"ppm",
"Malamute.ppm",
385TEST(TestExecutables, SimpleDecIrv9716x256) {
386 double mse[3] = { 18.5933, 17.0208, 22.5709};
387 int pae[3] = { 51, 48, 47};
389 run_mse_pae(
"simple_dec_irv97_16x256",
"ppm",
"Malamute.ppm",
397TEST(TestExecutables, SimpleDecIrv97128x32) {
398 double mse[3] = { 18.4443, 16.9133, 22.4193};
399 int pae[3] = { 52, 50, 46};
401 run_mse_pae(
"simple_dec_irv97_128x32",
"ppm",
"Malamute.ppm",
409TEST(TestExecutables, SimpleDecIrv9732x128) {
410 double mse[3] = { 18.4874, 16.9379, 22.4855};
411 int pae[3] = { 51, 48, 45};
413 run_mse_pae(
"simple_dec_irv97_32x128",
"ppm",
"Malamute.ppm",
421TEST(TestExecutables, SimpleDecRev5364x64) {
422 double mse[3] = { 0, 0, 0};
423 int pae[3] = { 0, 0, 0};
425 run_mse_pae(
"simple_dec_rev53_64x64",
"ppm",
"Malamute.ppm",
434TEST(TestExecutables, SimpleDecRev5332x32) {
435 double mse[3] = { 0, 0, 0};
436 int pae[3] = { 0, 0, 0};
438 run_mse_pae(
"simple_dec_rev53_32x32",
"ppm",
"Malamute.ppm",
447TEST(TestExecutables, SimpleDecRev534x4) {
448 double mse[3] = { 0, 0, 0};
449 int pae[3] = { 0, 0, 0};
451 run_mse_pae(
"simple_dec_rev53_4x4",
"ppm",
"Malamute.ppm",
460TEST(TestExecutables, SimpleDecRev531024x4) {
461 double mse[3] = { 0, 0, 0};
462 int pae[3] = { 0, 0, 0};
464 run_mse_pae(
"simple_dec_rev53_1024x4",
"ppm",
"Malamute.ppm",
473TEST(TestExecutables, SimpleDecRev534x1024) {
474 double mse[3] = { 0, 0, 0};
475 int pae[3] = { 0, 0, 0};
477 run_mse_pae(
"simple_dec_rev53_4x1024",
"ppm",
"Malamute.ppm",
488TEST(TestExecutables, SimpleDecIrv9764x64Yuv) {
489 double mse[3] = { 20.2778, 6.27912, 4.15937};
490 int pae[3] = { 52, 22, 31};
492 run_mse_pae(
"simple_dec_irv97_64x64_yuv",
"yuv",
"foreman_420.yuv",
493 ":352x288x8x420", 3, mse, pae);
503TEST(TestExecutables, SimpleDecRev5364x64Yuv) {
504 double mse[3] = { 0, 0, 0};
505 int pae[3] = { 0, 0, 0};
507 run_mse_pae(
"simple_dec_rev53_64x64_yuv",
"yuv",
"foreman_420.yuv",
508 ":352x288x8x420", 3, mse, pae);
518TEST(TestExecutables, SimpleDecIrv9764x64TilesYuv) {
519 double mse[3] = { 34.4972, 10.1112, 7.96331};
520 int pae[3] = { 67, 30, 39};
522 run_mse_pae(
"simple_dec_irv97_64x64_tiles_yuv",
"yuv",
"foreman_420.yuv",
523 ":352x288x8x420", 3, mse, pae);
533TEST(TestExecutables, SimpleDecRev5364x64TilesYuv) {
534 double mse[3] = { 0, 0, 0};
535 int pae[3] = { 0, 0, 0};
537 run_mse_pae(
"simple_dec_rev53_64x64_tiles_yuv",
"yuv",
"foreman_420.yuv",
538 ":352x288x8x420", 3, mse, pae);
547TEST(TestExecutables, SimpleDecIrv9764x64TilesLRCP) {
548 double mse[3] = { 71.8149, 68.7115, 89.4001};
549 int pae[3] = { 78, 78, 83};
551 run_mse_pae(
"simple_dec_irv97_64x64_tiles_LRCP",
"ppm",
"Malamute.ppm",
561TEST(TestExecutables, SimpleDecIrv9764x64TilesRLCP) {
562 double mse[3] = { 71.8149, 68.7115, 89.4001};
563 int pae[3] = { 78, 78, 83};
565 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RLCP",
"ppm",
"Malamute.ppm",
575TEST(TestExecutables, SimpleDecIrv9764x64TilesRPCL) {
576 double mse[3] = { 71.8149, 68.7115, 89.4001};
577 int pae[3] = { 78, 78, 83};
579 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RPCL",
"ppm",
"Malamute.ppm",
589TEST(TestExecutables, SimpleDecIrv9764x64TilesPCRL) {
590 double mse[3] = { 71.8149, 68.7115, 89.4001};
591 int pae[3] = { 78, 78, 83};
593 run_mse_pae(
"simple_dec_irv97_64x64_tiles_PCRL",
"ppm",
"Malamute.ppm",
603TEST(TestExecutables, SimpleDecIrv9764x64TilesCPRL) {
604 double mse[3] = { 71.8149, 68.7115, 89.4001};
605 int pae[3] = { 78, 78, 83};
607 run_mse_pae(
"simple_dec_irv97_64x64_tiles_CPRL",
"ppm",
"Malamute.ppm",
617TEST(TestExecutables, SimpleDecIrv9764x64TilesLRCP33) {
618 double mse[3] = { 56.2139, 51.4121, 69.0107};
619 int pae[3] = { 80, 81, 98};
621 run_mse_pae(
"simple_dec_irv97_64x64_tiles_LRCP33",
"ppm",
"Malamute.ppm",
631TEST(TestExecutables, SimpleDecIrv9764x64TilesRLCP33) {
632 double mse[3] = { 56.2139, 51.4121, 69.0107};
633 int pae[3] = { 80, 81, 98};
635 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RLCP33",
"ppm",
"Malamute.ppm",
645TEST(TestExecutables, SimpleDecIrv9764x64TilesRPCL33) {
646 double mse[3] = { 56.2139, 51.4121, 69.0107};
647 int pae[3] = { 80, 81, 98};
649 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RPCL33",
"ppm",
"Malamute.ppm",
659TEST(TestExecutables, SimpleDecIrv9764x64TilesPCRL33) {
660 double mse[3] = { 56.2139, 51.4121, 69.0107};
661 int pae[3] = { 80, 81, 98};
663 run_mse_pae(
"simple_dec_irv97_64x64_tiles_PCRL33",
"ppm",
"Malamute.ppm",
673TEST(TestExecutables, SimpleDecIrv9764x64TilesCPRL33) {
674 double mse[3] = { 56.2139, 51.4121, 69.0107};
675 int pae[3] = { 80, 81, 98};
677 run_mse_pae(
"simple_dec_irv97_64x64_tiles_CPRL33",
"ppm",
"Malamute.ppm",
687TEST(TestExecutables, SimpleDecIrv9764x64TilesLRCP33x33) {
688 double mse[3] = { 210.283, 210.214, 257.276};
689 int pae[3] = { 165, 161, 166};
690 run_ojph_expand(
"simple_dec_irv97_64x64_tiles_LRCP33x33",
"jph",
"ppm");
691 run_mse_pae(
"simple_dec_irv97_64x64_tiles_LRCP33x33",
"ppm",
"Malamute.ppm",
701TEST(TestExecutables, SimpleDecIrv9764x64TilesRLCP33x33) {
702 double mse[3] = { 210.283, 210.214, 257.276};
703 int pae[3] = { 165, 161, 166};
704 run_ojph_expand(
"simple_dec_irv97_64x64_tiles_RLCP33x33",
"jph",
"ppm");
705 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RLCP33x33",
"ppm",
"Malamute.ppm",
715TEST(TestExecutables, SimpleDecIrv9764x64TilesRPCL33x33) {
716 double mse[3] = { 210.283, 210.214, 257.276};
717 int pae[3] = { 165, 161, 166};
718 run_ojph_expand(
"simple_dec_irv97_64x64_tiles_RPCL33x33",
"jph",
"ppm");
719 run_mse_pae(
"simple_dec_irv97_64x64_tiles_RPCL33x33",
"ppm",
"Malamute.ppm",
729TEST(TestExecutables, SimpleDecIrv9764x64TilesPCRL33x33) {
730 double mse[3] = { 210.283, 210.214, 257.276};
731 int pae[3] = { 165, 161, 166};
732 run_ojph_expand(
"simple_dec_irv97_64x64_tiles_PCRL33x33",
"jph",
"ppm");
733 run_mse_pae(
"simple_dec_irv97_64x64_tiles_PCRL33x33",
"ppm",
"Malamute.ppm",
743TEST(TestExecutables, SimpleDecIrv9764x64TilesCPRL33x33) {
744 double mse[3] = { 210.283, 210.214, 257.276};
745 int pae[3] = { 165, 161, 166};
746 run_ojph_expand(
"simple_dec_irv97_64x64_tiles_CPRL33x33",
"jph",
"ppm");
747 run_mse_pae(
"simple_dec_irv97_64x64_tiles_CPRL33x33",
"ppm",
"Malamute.ppm",
756TEST(TestExecutables, SimpleDecRev5364x64GrayTiles) {
757 double mse[1] = { 0};
760 run_mse_pae(
"simple_dec_rev53_64x64_gray_tiles",
"pgm",
"monarch.pgm",
769TEST(TestExecutables, SimpleDecIrv9764x64GrayTiles) {
770 double mse[1] = { 18.9601};
773 run_mse_pae(
"simple_dec_irv97_64x64_gray_tiles",
"pgm",
"monarch.pgm",
781TEST(TestExecutables, SimpleDecIrv9764x6416bit) {
782 double mse[3] = { 60507.2, 36672.5, 64809.8};
783 int pae[3] = { 2547, 1974, 1922};
785 run_mse_pae(
"simple_dec_irv97_64x64_16bit",
"ppm",
"mm.ppm",
793TEST(TestExecutables, SimpleDecIrv9764x6416bitGray) {
794 double mse[1] = { 19382.9};
795 int pae[1] = { 1618};
797 run_mse_pae(
"simple_dec_irv97_64x64_16bit_gray",
"pgm",
"mm.pgm",
805TEST(TestExecutables, SimpleDecRev5364x6416bit) {
806 double mse[3] = { 0, 0, 0};
807 int pae[3] = { 0, 0, 0};
809 run_mse_pae(
"simple_dec_rev53_64x64_16bit",
"ppm",
"mm.ppm",
818TEST(TestExecutables, SimpleDecRev5364x6416bitGray) {
819 double mse[1] = { 0};
822 run_mse_pae(
"simple_dec_rev53_64x64_16bit_gray",
"pgm",
"mm.pgm",
831TEST(TestExecutables, SimpleEncIrv9764x64) {
832 double mse[3] = { 46.2004, 43.622, 56.7452};
833 int pae[3] = { 48, 46, 52};
835 "simple_enc_irv97_64x64",
"",
"j2c",
839 "Malamute.ppm",
"", 3, mse, pae);
847TEST(TestExecutables, SimpleEncIrv9732x32) {
848 double mse[3] = { 1.78779, 1.26001, 2.38395};
849 int pae[3] = { 7, 6, 9};
851 "simple_enc_irv97_32x32",
"",
"j2c",
852 "-qstep 0.01 -block_size \"{32,32}\"");
855 "Malamute.ppm",
"", 3, mse, pae);
863TEST(TestExecutables, SimpleEncIrv9716x16) {
864 double mse[3] = { 1.78779, 1.26001, 2.38395};
865 int pae[3] = { 7, 6, 9};
867 "simple_enc_irv97_16x16",
"",
"j2c",
868 "-qstep 0.01 -block_size \"{16,16}\"");
871 "Malamute.ppm",
"", 3, mse, pae);
879TEST(TestExecutables, SimpleEncIrv974x4) {
880 double mse[3] = { 1.78779, 1.26001, 2.38395};
881 int pae[3] = { 7, 6, 9};
883 "simple_enc_irv97_4x4",
"",
"j2c",
884 "-qstep 0.01 -block_size \"{4,4}\"");
887 "Malamute.ppm",
"", 3, mse, pae);
895TEST(TestExecutables, SimpleEncIrv971024x4) {
896 double mse[3] = { 1.78779, 1.26001, 2.38395};
897 int pae[3] = { 7, 6, 9};
899 "simple_enc_irv97_1024x4",
"",
"j2c",
900 "-qstep 0.01 -block_size \"{4,1024}\"");
903 "Malamute.ppm",
"", 3, mse, pae);
911TEST(TestExecutables, SimpleEncIrv974x1024) {
912 double mse[3] = { 1.78779, 1.26001, 2.38395};
913 int pae[3] = { 7, 6, 9};
915 "simple_enc_irv97_4x1024",
"",
"j2c",
916 "-qstep 0.01 -block_size \"{1024,4}\"");
919 "Malamute.ppm",
"", 3, mse, pae);
927TEST(TestExecutables, SimpleEncIrv97512x8) {
928 double mse[3] = { 1.78779, 1.26001, 2.38395};
929 int pae[3] = { 7, 6, 9};
931 "simple_enc_irv97_512x8",
"",
"j2c",
932 "-qstep 0.01 -block_size \"{8,512}\"");
935 "Malamute.ppm",
"", 3, mse, pae);
943TEST(TestExecutables, SimpleEncIrv978x512) {
944 double mse[3] = { 1.78779, 1.26001, 2.38395};
945 int pae[3] = { 7, 6, 9};
947 "simple_enc_irv97_8x512",
"",
"j2c",
948 "-qstep 0.01 -block_size \"{512,8}\"");
951 "Malamute.ppm",
"", 3, mse, pae);
959TEST(TestExecutables, SimpleEncIrv97256x16) {
960 double mse[3] = { 1.78779, 1.26001, 2.38395};
961 int pae[3] = { 7, 6, 9};
963 "simple_enc_irv97_256x16",
"",
"j2c",
964 "-qstep 0.01 -block_size \"{16,256}\"");
967 "Malamute.ppm",
"", 3, mse, pae);
975TEST(TestExecutables, SimpleEncIrv9716x256) {
976 double mse[3] = { 1.78779, 1.26001, 2.38395};
977 int pae[3] = { 7, 6, 9};
979 "simple_enc_irv97_16x256",
"",
"j2c",
980 "-qstep 0.01 -block_size \"{256,16}\"");
983 "Malamute.ppm",
"", 3, mse, pae);
991TEST(TestExecutables, SimpleEncIrv97128x32) {
992 double mse[3] = { 1.78779, 1.26001, 2.38395};
993 int pae[3] = { 7, 6, 9};
995 "simple_enc_irv97_128x32",
"",
"j2c",
996 "-qstep 0.01 -block_size \"{32,128}\"");
999 "Malamute.ppm",
"", 3, mse, pae);
1007TEST(TestExecutables, SimpleEncIrv9732x128) {
1008 double mse[3] = { 1.78779, 1.26001, 2.38395};
1009 int pae[3] = { 7, 6, 9};
1011 "simple_enc_irv97_32x128",
"",
"j2c",
1012 "-qstep 0.01 -block_size \"{128,32}\"");
1015 "Malamute.ppm",
"", 3, mse, pae);
1023TEST(TestExecutables, SimpleEncIrv9764x6416bit) {
1024 double mse[3] = { 51727.3, 32596.4, 45897.8};
1025 int pae[3] = { 1512, 1481, 1778};
1027 "simple_enc_irv97_64x64_16bit",
"",
"j2c",
1030 run_mse_pae(
"simple_enc_irv97_64x64_16bit",
"ppm",
1031 "mm.ppm",
"", 3, mse, pae);
1039TEST(TestExecutables, SimpleEncIrv9764x6416bitGray) {
1040 double mse[1] = { 25150.6};
1041 int pae[1] = { 1081};
1043 "simple_enc_irv97_64x64_16bit_gray",
"",
"j2c",
1046 run_mse_pae(
"simple_enc_irv97_64x64_16bit_gray",
"pgm",
1047 "mm.pgm",
"", 1, mse, pae);
1055TEST(TestExecutables, SimpleEncRev5364x6416bit) {
1056 double mse[3] = { 0, 0, 0};
1057 int pae[3] = { 0, 0, 0};
1059 "simple_enc_rev53_64x64_16bit",
"",
"j2c",
1060 "-reversible true");
1062 run_mse_pae(
"simple_enc_rev53_64x64_16bit",
"ppm",
1063 "mm.ppm",
"", 3, mse, pae);
1071TEST(TestExecutables, SimpleEncRev5364x6416bitGray) {
1072 double mse[1] = { 0};
1075 "simple_enc_rev53_64x64_16bit_gray",
"",
"j2c",
1076 "-reversible true");
1078 run_mse_pae(
"simple_enc_rev53_64x64_16bit_gray",
"pgm",
1079 "mm.pgm",
"", 1, mse, pae);
1087TEST(TestExecutables, SimpleEncRev5364x64) {
1088 double mse[3] = { 0, 0, 0};
1089 int pae[3] = { 0, 0, 0};
1091 "simple_enc_rev53_64x64",
"",
"j2c",
1092 "-reversible true");
1095 "Malamute.ppm",
"", 3, mse, pae);
1103TEST(TestExecutables, SimpleEncRev5332x32) {
1104 double mse[3] = { 0, 0, 0};
1105 int pae[3] = { 0, 0, 0};
1107 "simple_enc_rev53_32x32",
"",
"j2c",
1108 "-reversible true -block_size \"{32,32}\"");
1111 "Malamute.ppm",
"", 3, mse, pae);
1119TEST(TestExecutables, SimpleEncRev534x4) {
1120 double mse[3] = { 0, 0, 0};
1121 int pae[3] = { 0, 0, 0};
1123 "simple_enc_rev53_4x4",
"",
"j2c",
1124 "-reversible true -block_size \"{4,4}\"");
1127 "Malamute.ppm",
"", 3, mse, pae);
1135TEST(TestExecutables, SimpleEncRev531024x4) {
1136 double mse[3] = { 0, 0, 0};
1137 int pae[3] = { 0, 0, 0};
1139 "simple_enc_rev53_1024x4",
"",
"j2c",
1140 "-reversible true -block_size \"{4,1024}\"");
1143 "Malamute.ppm",
"", 3, mse, pae);
1151TEST(TestExecutables, SimpleEncRev534x1024) {
1152 double mse[3] = { 0, 0, 0};
1153 int pae[3] = { 0, 0, 0};
1155 "simple_enc_rev53_4x1024",
"",
"j2c",
1156 "-reversible true -block_size \"{1024,4}\"");
1159 "Malamute.ppm",
"", 3, mse, pae);
1168TEST(TestExecutables, SimpleEncIrv9764x64Yuv) {
1169 double mse[3] = { 30.3548, 7.69602, 5.22246};
1170 int pae[3] = { 49, 27, 26};
1172 "simple_enc_irv97_64x64_yuv",
"",
"j2c",
1173 "-qstep 0.1 -dims \"{352,288}\" -num_comps 3 -downsamp"
1174 " \"{1,1}\",\"{2,2}\",\"{2,2}\" -bit_depth 8,8,8"
1175 " -signed false,false,false");
1178 "foreman_420.yuv",
":352x288x8x420", 3, mse, pae);
1188TEST(TestExecutables, SimpleEncRev5364x64Yuv) {
1189 double mse[3] = { 0, 0, 0};
1190 int pae[3] = { 0, 0, 0};
1192 "simple_enc_rev53_64x64_yuv",
"",
"j2c",
1193 "-reversible true -qstep 0.1 -dims \"{352,288}\""
1194 " -num_comps 3 -downsamp \"{1,1}\",\"{2,2}\",\"{2,2}\""
1195 " -bit_depth 8,8,8 -signed false,false,false");
1198 "foreman_420.yuv",
":352x288x8x420", 3, mse, pae);
1206TEST(TestExecutables, SimpleEncIrv97TallNarrow) {
1207 double mse[3] = { 112.097, 79.2214, 71.1367};
1208 int pae[3] = { 56, 41, 32};
1210 "simple_enc_irv97_tall_narrow",
"",
"j2c",
1213 run_mse_pae(
"simple_enc_irv97_tall_narrow",
"ppm",
1214 "tall_narrow.ppm",
"", 3, mse, pae);
1222TEST(TestExecutables, SimpleEncIrv97TallNarrow1) {
1223 double mse[3] = { 96.7935, 69.6824, 66.7822};
1224 int pae[3] = { 41, 39, 35};
1226 "simple_enc_irv97_tall_narrow1",
"",
"j2c",
1227 "-image_offset \"{1,0}\" -qstep 0.1");
1229 run_mse_pae(
"simple_enc_irv97_tall_narrow1",
"ppm",
1230 "tall_narrow.ppm",
"", 3, mse, pae);
1238TEST(TestExecutables, SimpleEncRev53TallNarrow) {
1239 double mse[3] = { 0, 0, 0};
1240 int pae[3] = { 0, 0, 0};
1242 "simple_enc_rev53_tall_narrow",
"",
"j2c",
1243 "-reversible true");
1245 run_mse_pae(
"simple_enc_rev53_tall_narrow",
"ppm",
1246 "tall_narrow.ppm",
"", 3, mse, pae);
1254TEST(TestExecutables, SimpleEncRev53TallNarrow1) {
1255 double mse[3] = { 0, 0, 0};
1256 int pae[3] = { 0, 0, 0};
1258 "simple_enc_rev53_tall_narrow1",
"",
"j2c",
1259 "-image_offset \"{1,0}\" -reversible true");
1261 run_mse_pae(
"simple_enc_rev53_tall_narrow1",
"ppm",
1262 "tall_narrow.ppm",
"", 3, mse, pae);
1270TEST(TestExecutables, DpxEnc1280x72010bitLeNuke11) {
1271 double mse[3] = { 0, 0, 0};
1272 int pae[3] = { 0, 0, 0};
1274 "dpx_enc_1280x720_10bit_le_nuke11",
"",
"j2c",
1275 "-reversible true");
1277 run_mse_pae(
"dpx_enc_1280x720_10bit_le_nuke11",
"ppm",
1278 "dpx_1280x720_10bit.ppm",
"", 3, mse, pae);
1286TEST(TestExecutables, DpxEnc1280x72010bitBeNuke11) {
1287 double mse[3] = { 0, 0, 0};
1288 int pae[3] = { 0, 0, 0};
1290 "dpx_enc_1280x720_10bit_be_nuke11",
"",
"j2c",
1291 "-reversible true");
1293 run_mse_pae(
"dpx_enc_1280x720_10bit_be_nuke11",
"ppm",
1294 "dpx_1280x720_10bit.ppm",
"", 3, mse, pae);
1302TEST(TestExecutables, DpxEnc1280x72016bitLeNuke11) {
1303 double mse[3] = { 0, 0, 0};
1304 int pae[3] = { 0, 0, 0};
1306 "dpx_enc_1280x720_16bit_le_nuke11",
"",
"j2c",
1307 "-reversible true");
1309 run_mse_pae(
"dpx_enc_1280x720_16bit_le_nuke11",
"ppm",
1310 "dpx_1280x720_16bit.ppm",
"", 3, mse, pae);
1318TEST(TestExecutables, DpxEnc1280x72016bitBeNuke11) {
1319 double mse[3] = { 0, 0, 0};
1320 int pae[3] = { 0, 0, 0};
1322 "dpx_enc_1280x720_16bit_be_nuke11",
"",
"j2c",
1323 "-reversible true");
1325 run_mse_pae(
"dpx_enc_1280x720_16bit_be_nuke11",
"ppm",
1326 "dpx_1280x720_16bit.ppm",
"", 3, mse, pae);
1334TEST(TestExecutables, DpxEnc1280x72010bitResolve18) {
1335 double mse[3] = { 0, 0, 0};
1336 int pae[3] = { 0, 0, 0};
1338 "dpx_enc_1280x720_10bit_resolve18",
"",
"j2c",
1339 "-reversible true");
1341 run_mse_pae(
"dpx_enc_1280x720_10bit_resolve18",
"ppm",
1342 "dpx_1280x720_10bit.ppm",
"", 3, mse, pae);
1350TEST(TestExecutables, DpxEnc1280x72016bitResolve18) {
1351 double mse[3] = { 0, 0, 0};
1352 int pae[3] = { 0, 0, 0};
1354 "dpx_enc_1280x720_16bit_resolve18",
"",
"j2c",
1355 "-reversible true");
1357 run_mse_pae(
"dpx_enc_1280x720_16bit_resolve18",
"ppm",
1358 "dpx_1280x720_16bit.ppm",
"", 3, mse, pae);
1365 ::testing::InitGoogleTest(&argc, argv);
1366 return RUN_ALL_TESTS();
static int ojph_pclose(FILE *stream)
#define COMPRESS_EXECUTABLE
void run_ojph_compress_expand(const std::string &base_filename, const std::string &out_ext, const std::string &decode_ext)
#define COMPARE_FILES_PATH
int main(int argc, char **argv)
void run_ojph_expand(const std::string &base_filename, const std::string &src_ext, const std::string &out_ext)
static int execute(const std::string &cmd, std::string &result)
#define EXPAND_EXECUTABLE
static FILE * ojph_popen(const char *command, const char *modes)
void run_mse_pae(const std::string &base_filename, const std::string &out_ext, const std::string &ref_filename, const std::string &yuv_specs, int num_components, double *mse, int *pae)
void compare_files(const std::string &base_filename, const std::string &extended_base_fname, const std::string &ext)
TEST(TestExecutables, OpenJPHCompressNoArguments)
void run_ojph_compress(const std::string &ref_filename, const std::string &base_filename, const std::string &extended_base_fname, const std::string &out_ext, const std::string &extra_options)